Buscar en archivo txt, multidatos de hoja excel .

Tengo 10 mil datos en columna excel A1-A10000 y necesito buscar en archivo txt ; su correspondiente numero a su izquierda y ponerlo en celdas B1-B10000. Adjunto imagen .. En este caso seria para : 488 (excel) su correspondiente numero de 9 dígitos - 923078164 .. Gracias

1 Respuesta

Respuesta
1

En el archivo txt, el espacio que existe entre el número de la izquierda y el número de la derecha, ¿es una tabulación o son espacios en blanco?

¿El archivo txt va a estar en la misma carpeta donde se encuentra el archivo de excel?

¡Gracias! Lo primero .. hay un espacio en blanco entre un numero y el otro (derecha) ahora si es necesario que sea tabulación .. se puede hacer... y lo segundo el archivo txt puede estar en la misma carpeta si es necesario .. gracias

Entonces entre los números hay un espacio.

Guarda el archivo con la macro y el archivo txt en la misma carpeta.

Cambia en la macro el nombre del archivo txt, en esta línea:

arch = "basedatospi700.txt"

---

Hice el código de esta manera para leer los 10,000 registros de manera más rápida.

Prueba el siguiente código y comentas.

Sub Buscar_Numero()
  Dim wb2 As Workbook
  Dim sh1 As Worksheet, sh2 As Worksheet
  Dim ruta As String, arch As String
  Dim a As Variant, b As Variant
  Dim dic As Object
  Dim i As Long, fila As Long
  '
  ruta = ThisWorkbook.Path & "\"
  arch = "basedatospi700.txt"
  '
  Set sh1 = ActiveSheet
  a = sh1.Range("A1:B" & sh1.Range("A" & Rows.Count).End(3).Row).Value
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a)
    dic(a(i, 1)) = i
  Next
  '
  Workbooks.OpenText Filename:=ruta & arch, Origin:=xlWindows, _
    StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
    ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False, _
    Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
    TrailingMinusNumbers:=True
  Set wb2 = ActiveWorkbook
  Set sh2 = wb2.Sheets(1)
  '
  b = sh2.Range("A1:B" & sh2.Range("A" & Rows.Count).End(3).Row).Value
  For i = 1 To UBound(b)
    If dic.exists(b(i, 1)) Then
      fila = dic(b(i, 1))
      a(fila, 2) = b(i, 2)
    End If
  Next
  wb2.Close False
  '
  Sh1. Range("A1").Resize(UBound(a, 1), 2).Value = a
End Sub

¡Gracias! Hola cree la carpeta en escritorio pegue el archivo basedatospi700.txt y la macro.. al hacerla correr no pasa nada ...quizás donde me pides " Cambia en la macro el nombre del archivo txt, en esta línea:

arch = "basedatospi700.txt"

no comprendo como hacerlo, ¿Por qué nombre la cambio? Gracias

Pon los 2 archivos en la misma carpeta.

¿Cómo se llama tu archivo de texto?

Ese nombre lo pones en esta línea:

"basedatospi700.txt"

¡Gracias! Si así, esta... al hacer correr la macro me aparece un flash del archivo txt y queda el archivo excel con los números en la columna A.. gracias

[No olvides valorar la respuesta.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas