Jump to content

Luis Antonio Torres

Members
  • Content Count

    28
  • Joined

  • Last visited

About Luis Antonio Torres

  • Rank
    Member
  • Birthday 09/15/1990

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hola amigo @JSDJSD muchas gracias. Es lo que quería. Solucionado
  2. Amigos, Buenas tardes por alguien me puede ayudar por favor con el siguiente tema: Tengo un libro que tiene en la columna A, el código 1,2,3 quisiera ver la posibilidad de por macro pasarla a hojas individuales que quede en "hoja1", todo lo de código 1, en "hoja2", todo lo de código 2 , en "hoja3", todo lo de código 3 pruebacodigos.xlsx
  3. Hola @Abraham Valencia, El archivo lo subí con 100 registros, pensando pues en el límite del foro, sin embargo, he hecho pruebas hoy día y ha tardado 68 segundos en correr la macro sobre los 300k registros, soy nuevo en esto, pero habrá alguna manera de evitar tener que hacer esto, dado que podría tener 20 columnas en el diccionario y no sé si podría ponerlo en un itinerador en vez de poner 20 líneas para cada valor?
  4. @ikanni acabé de encontrar el error, pues estaba referenciando mal en el código del libro adjunto, increíblemente ha funcionado el diccionario, lo he utilizado como un buscarv, que demora 63,28 segundos en hacer lo que hacía con application.vlookup en 2 horas !!!! así me ha quedado el código: (el código lo encontré en un foro en inglés y me ha funcionado. Option Explicit Sub VBALookUpMejorado() Dim oDict As Object Dim lookupRange As Range Dim rangedestino As Range Dim iterator As Range Dim cel As Range Dim secs1 As Single Dim secs2 As Single 'Dimension of the array should be the number of values you 'want to store to correspond to the key. 'In my example, 0 to 1 means there are two values, 'a 0th value and a 1st value Dim arrayOfValues(0 To 2) As Variant secs1 = Timer() 'The range that we normally vlookup against (only 'using the first column in my range) ''Establezco el rango en donde quiero buscar que quiero buscar para obtener datos de esa hoja Set lookupRange = Sheets("Hoja2").Range("A1:A241666") 'DATA TO BE COMPARED ''Configuro el diccionario Set oDict = CreateObject("Scripting.Dictionary") 'Set optimization settings Application.ScreenUpdating = False ' DATA STORING EXTRACTED IN HOJA2 For Each iterator In lookupRange 'Check if the ID already exists If Not oDict.exists(iterator.Value) Then 'create the array '0th element is the first column to right of iterator arrayOfValues(0) = iterator.Offset(, 1).Value '1st element is the second column to right of iterator arrayOfValues(1) = iterator.Offset(, 2).Value '2st element is the second column to right of iterator arrayOfValues(2) = iterator.Offset(, 3).Value 'Add key and array to the dictionary oDict.Add iterator.Value, arrayOfValues End If Next iterator Set rangedestino = Sheets("Hoja1").Range("A1:A300000") 'DATA TARGET For Each cel In rangedestino If oDict.exists(cel.Value) Then cel.Offset(, 6).Value = oDict(cel.Value)(1) 'Value extracted from dictionary in column "V" doesnot work =( End If Next cel secs2 = Timer() MsgBox ("Time taken to run code:" & vbNewLine & secs2 - secs1 & " seconds") Application.ScreenUpdating = True End Sub Ahora sobre el (archivo que de antemano muchas gracias por la ayuda) soy un tanto nuevo en esto, tal vez sepas por qué se demora más que este código, si entiendo son lo mismo?
  5. Hola, Muchas gracias por tu respuesta, he probado ejecutando la macro en el libro que tiene 300k registros y Excel se ha quedado congelado =( y va 30 minutos. Alguna sugerencia?
  6. Estimados Amigos, Buenas noches, una vez más requiriendo de su valiosa ayuda. Esta vez con el tema de saber más acerca de poder optimizar el BuscarV bajo vba, (VLOOKUP), ya que tengo un libro de unos 300000k registros y realmente ha tardado una eternidad en conseguir el objetivo aplicando formular1c1 y applicationvlookup. Consultando por ahí en google me encontré con el tema de los arrays y diccionarios, que increíblemente optimizan el trabajo de los vlookup en vba, pasando de hacer el trabajo de 30 minutos a 10 segundos sin exagerar. He intentando con un código que me ayudaron en un foro en inglés sin embargo no logro hacerlo trabajar además que soy nuevo en esto. La idea es que la id de la hoja1, busque en la hoja2 y obtenga la columna x de la hoja 2 en función de la condición. Este es el fichero para que alguien me de una manito por favor. Gracias. PRUEBAS2.xlsm
  7. Estimados Amigos, Buenos días, tengo el siguiente libro que realiza un procedimiento basado en buscar la última fila con información y recuperar el rango en la columna E. Me gustaría poder trabajarlo únicamente con un rango seleccionado, es decir, que cuando ejecute la macro no lo haga para todo el rango si no para el rango que seleccioné. Alguien me podría dar una mano por favor. Gracias. libropruebas.xlsm
  8. Hola Amigo, Muchas gracias por tu respuesta, el archivo es el siguiente: libroadcccc.xlsm
  9. Estimados Amigos, Buenas tardes, tengo una pregunta sobre como podría optimizar una macro que recorre 300.000 registros y concatena información con el siguiente código: Sub ConcatenaColumnas() Dim numzeros As String numzeros = "0000000000" Range("A:B").Select Selection.NumberFormat = "@" Range("E3").Select '------------------Columna Validación-------------------------------------------------------------------------------------------- Do While ActiveCell <> "" 'Bucle hasta la celda este en blanco ''de la celda activada retroceder xx números (0, -xx) a la izquierda y escribir fórmula ActiveCell.Offset(0, -4).FormulaR1C1 = _ Format(ActiveCell.Offset(0, 0), "dd") & Format(ActiveCell.Offset(0, 0), "mm") & Format(ActiveCell.Offset(0, 0), "yyyy") _ & Left(numzeros, 10 - Len(ActiveCell.Offset(0, 3))) & ActiveCell.Offset(0, 3) _ & Left(numzeros, 10 - Len(ActiveCell.Offset(0, 4))) & ActiveCell.Offset(0, 4) _ & ActiveCell.Offset(0, 5) _ & ActiveCell.Offset(0, 6) ActiveCell.Offset(0, -3).FormulaR1C1 = _ ActiveCell.Offset(0, 2) _ & ActiveCell.Offset(0, 6) _ ActiveCell.Offset(1, 0).Select Loop End Sub El código recorre la celda del rango "e3" validando que tenga información y concatena creando una cadena de texto en el rango (a1), sin embargo ha tardado 12 minutos en cumplir la tarea. Alguien podría darme una mano para poder optimizar el código, sin recurrir a power bi o pivot? De antemano muchas gracias.
  10. Hola @digitalboy muchas gracias por tu respuesta. Me ha servido muy bien, he utilizado vbtextcompare, y quedó tal cual lo venía buscando. Con lo de las librerías no la tengo muy clara, sin embargo, muchas gracias por la guía ya mismo voy a "guglear". Muchas gracias por tu tiempo y ayuda.
  11. Estimados amigos buenos días, Por favor, alguien me puede dar una mano la siguiente cuestión: Tengo un xml que tiene el campo nodo llamado <adicionales> </adicionales> mismo que tiene campos nodo hijos <tagadicionales nombre"Apellido"> </tagadicionales> <tagadicionales nombre"Nombre"> </tagadicionales> <tagadicionales nombre"Numero"> </tagadicionales> Mas o menos así: <adicionales> <tagadicionales nombre="Apellido">Turanga</tagadicionales> <tagadicionales nombre="Nombre">Leyla</tagadicionales> <tagadicionales nombre="Numero">1723495</tagadicionales> </adicionales> Entonces tengo el siguiente código que busca el tag y extrae el valor: If InStr(1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") > 0 Then ActiveCell.Offset(0, 30).Value = Mid(TextStringNumber2, InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") + 34, InStr(num1, TextStringNumber2, "</tagadicionales>") - InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") - 34) End If Sin embargo no me arroja valor alguno cuando ejecuto la macro, sé que talvez en la línea "<tagadicionales nombre""Apellido"">" estoy teniendo un error pero no sé que estoy haciendo mal ya que cuando es un tag normal que no tiene comillas en el texto sí me recupera la información. Alguien que por favor me pueda dar alguna guía o sugerencia. Muchas gracias de antemano.
  12. Estimado @Antoni como lo ha dicho @isidro usted es un genio pensé quedaría desamparado. Muchas gracias por su tiempo y ayuda.
  13. Estimado @isidrod, Muchas gracias por tu respuesta, después de verl los archivos me parecen interesantes. Pero tengo un problema, mi archivo *.txt no tiene separadores que me pueda servir de comodín, ni texto separados en columnas. Tienen simetría en número de filas, pero, no tiene más que pueda ayudarme. Entonces no sé como podría ayudarme de algún otro medio para importar el texto y tenga prolijidad en la hoja excel. El archivo me queda algo así como el adjunto. Alguna sugerencia más, cualquier guía o ayuda será bienvenidad. De nuevo muchas gracias. excel pdf.xlsx
  14. Estimados Amigos, Buenas tardes, tengo un archivo que genera pdf a partir de la información que existe en una hoja de excel; que esta a su vez importa información de un archivo *.txt El problema es que al importar estéticamente queda disparejo y sin presentación que valga la pena. No sé si haya alguna forma de importar esta información sin tener que utilizar las opciones establecidas por excel de divir las columnas al importar o copiar el texto directamente. Alguna forma de importar con una macro talvez leyendo el texto del archivo txt, alguna guía o sugerencia? Quedo muy agradecido con todos.. El archivo en cuestión: https://drive.google.com/file/d/1OkUWBfwgfZyK8Cbm2Oca96JQ6i5YL2jM/view?usp=sharing texto a ser importado.txt
×
×
  • Create New...

Important Information

Privacy Policy