Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

134
Visualizações
Manera más rápida de recorrer grandes listas de transacciones

Objetivo: Estoy creando una macro a continuación con la intención de comparar lo que ha cambiado en una lista de transacciones (TL) a medida que crece con la publicación continua de nuevas transacciones. Quiero saber exactamente qué ha cambiado entre el nuevo TL y el antiguo TL, de modo que Old TL + Changes = New TL...

Cómo lo hice hasta ahora: el método es marcar las transacciones en 2 hojas separadas (TL antiguo, TL nuevo) con el mismo diseño de columnas llenas de transacciones de la siguiente manera:

  • Coincidencia exacta (exactamente la misma cadena de fila concatenada en ambas hojas)
  • Coincidencia parcial (no es exactamente la misma cadena, pero sí el mismo número de documento en ambas hojas)
  • Sin coincidencia (sin cadena exacta, sin número de documento exacto en otra hoja)

Desafío: mi código se ejecuta, pero con 50 000 registros entre las hojas, tarda unos 15 minutos

Pregunta: ¿Alguien tiene alguna sugerencia sobre cómo podría hacer que el siguiente código se ejecute más rápido (extraer), donde todas las variables son rangos excepto nrws y cls, que son dobles?

 For l = 2 To nrws Set nkey = nTL.Cells(l, cls + 1) Set ndoc = nTL.Cells(l, 5) nTL.Cells(l, cls + 2) = Application.WorksheetFunction.CountIf(nkeyList, nkey) nTL.Cells(l, cls + 3) = Application.WorksheetFunction.CountIf(okeyList, nkey) nTL.Cells(l, cls + 4) = Application.WorksheetFunction.CountIf(ndocList, ndoc) nTL.Cells(l, cls + 5) = Application.WorksheetFunction.CountIf(odocList, ndoc) If nTL.Cells(l, cls + 3) = 0 Then If nTL.Cells(l, cls + 5) = 0 Then nTL.Cells(l, cls + 6) = "No Match" Else: nTL.Cells(l, cls + 6) = "Partial Match" End If ElseIf nTL.Cells(l, cls + 2) = nTL.Cells(l, cls + 3) And nTL.Cells(l, cls + 4) = nTL.Cells(l, cls + 5) Then nTL.Cells(l, cls + 6) = "Exact Match" ElseIf nTL.Cells(l, cls + 2) = nTL.Cells(l, cls + 3) Then nTL.Cells(l, cls + 6) = "Partial Match" Else nTL.Cells(l, cls + 6) = "Check" End If Next l

Gracias de antemano - Avísame si omití algo.

about 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda