Gracias por compartir doña Elsa. En el caso que el rango de búsqueda tenga un filtro el método find no logra encontrar los valores ocultados por el filtro. ¿Que sugiere en esos casos?
Hola. Una opción sería quitar el filtro, hacer la búsqueda y volver a colocar el filtro. Dejo un pequeño ejemplo: Sub busca_con_filtro() 'dato a buscar en la col C dato = "mayo" 'se quitan posibles filtros If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData On Error GoTo noEncontrado Range("C:C").Find(what:=dato, LookIn:=xlValues, lookat:=xlWhole).Activate 'si encuentra el dato guarda la ubicación en una variable o mensaje MsgBox ubica 'opcional 'vuelve a colocar el filtro que tenía ActiveSheet.Range("$A$4:$D$26").AutoFilter Field:=1, Criteria1:="" & "COBRANZAS" Exit Sub noEncontrado: MsgBox "No se encontró el texto " & dato & " en la col C" 'vuelve a colocar el filtro que tenía ActiveSheet.Range("$A$4:$D$26").AutoFilter Field:=1, Criteria1:="" & "COBRANZAS" End Sub Otra opción es recorrer el rango con un bucle del tipo For... Next donde se incluyan las celdas ocultas: Sub busca_con_ocultos() 'dato a buscar en la col C dato = "OCT" For i = 5 To Range("A" & Rows.Count).End(xlUp).Row If Range("C" & i) = dato Then MsgBox "Dato encontrado en fila " & i Exit For End If Next i End Sub
@@ElsaMatilde muchísimas gracias por compartir su conocimiento. En mi caso prefiero la opción de quitar y poner los filtros para usar el Find dado que se trata de muchos registros a evaluar. Le saludo desde Costa Rica 🇨🇷.
Hola Elsa, muy bueno tu vídeo. // Quisiera aprovechar hacerte una consulta. Yo quiero usar el metodo (Find) para encontrar un valor en una columna, la cual dicha columna tendra en su mayoria valores cero (0). Supongamos: En la columna: H10:H20 hay valores que en su mayoria son Ceros (0) pero en la celda H15 hay un numero 77 y en la celda H19 hay un numero 14. Entonces quiero que por medio de FIND me encuentre el PRIMER valor DIFERENTE a cero de esa columna. Que en este ejemplo que te dí debería de devolver 77... Espero me haya dado a entender, y me puedas ayudar!
Con Find podrías encontrar los valores distintos a 0, con el argumento What:= "*" , si tienes activada la opción de 'ocultar ceros' como explico en el video N° 57 a partir del minuto 6:11. Sino tendrías que utilizar algún tipo de bucle como este: Sub buscaPrimerValor() 'ajustar col y rango total For i = 10 To 20 If Range("H" & i) 0 Then resulta = Range("H" & i): Exit For Next i 'opcional: indicar en qué fila se encontró la celda y su valor. MsgBox "El primer valor es " & resulta & " y se encuentra en la fila " & i End Sub
@@ElsaMatilde Gracias, para lo que ocupaba me sirvió el ciclo FOR que me mostraste. Ya que NO podía ocultar los valores cero, siempre debían de ser reflejados en la tabla por eso lo del video N° 57 no me funciona. Saludos!
En el minuto 13:24 del video podrás observar la macro completa con la información de los posibles resultados: busco.Row y busco.Column (fila y columna del texto encontrado). Address sería para la referencia completa. Sdos!
@@ElsaMatilde exacto, ya lo aclaré y entendí, muchas gracias por compartir tus conocimientos, no tenés idea de lo mucho que me ayudás (cada video tuyo lo veo como 10 veces) gracias y saludos desde bolivia
Elsa Excelente contenid como siempre, te que consultar por algo que no he podido realizar con una macro para eliminar caracteres especiales tipo blanco que existen en una columna del Sku, son espedificamente 5 valores que los destaque en color amarilo, aplique una macro pero no hace lo que requiero. Te dejo el enlace drive.google.com/file/d/1knTvnxE8Aj1CeDe-Uo75AXuzJV7olfO1/view?usp=sharing y ojala me puedas orientar.Gracias.
Hola. No es fácil atender consultas por este medio porque no se pueden mostrar imágenes o códigos. Dejala en el tablón Excel de todoexpertos y desde allí la seguiremos. En principio tu hoja no tiene caracteres especiales como el espacio (CHR(160)), quizás porque ya hiciste correr la macro. Aclarame porqué consideras que esas 5 celdas no están como las esperas... se ven igual al resto. Sdos!
@@ElsaMatilde debido que al momento de hacer un cruce con otra hoja esos 5 sku no me los reconoce. De todas maneras lo voy a plantear en el tablon de todoexpertos. Saludos
@@armandobrito5022 Es otro el motivo entonces. Porque le corrí un código para ver si tenían espacios extras y no los tiene. También podrás comprobarlo colocando en cualquier celda la función: =LARGO(celda) y verás que te da la cantidad justa de los caracteres mostrados. Quizás el problema lo tiene la otra hoja.
@@ElsaMatilde gracias elsa tenias razón era otro el asunto bastante simple cambiar el formato a General y ahí me reconoció el cruce. Se agradece tu colaboración. Saludos
Hola Elsa muy buenos los vídeos, costo mucho en ubicarte. Por favor necesitaría saber como adjuntar mi archivo para lograr modificar mi Macro VB La Macro Busca datos y lo Pega en otra Hoja Necesitaría modificar la macro "Resumen" ya que la misma pasa la información desde la hoja "Facturas" a la "Resumen". Lo que pretendo de ser factible que al pasar la información a la hoja "Resumen" al no tener el importe del servicio que coloque la fecha del mismo. Yo lo realice manualmente, pero al sumar los importe, la fecha ( que es una cifra ) también la totaliza. Quisiera lograr con la macro que: Primero: Pasar la fecha Segundo: que a totalizar ignore la fecha y sume lo que es importe solamente. Sub resumen() Dim uFo&, uFd& Dim servO As New Collection Dim celO As Range, servD As Range, servN As Range, mes As Range Dim item Dim primer$, servicio$ uFo = Range("C" & Rows.Count).End(xlUp).Row 'última fila con datos 'Llenamos la colección con los servicios sin repetidos For Each celO In Range("C5:C" & uFo) On Error Resume Next servO.Add celO, CStr(celO) Next celO 'Trabajamos sobre la hoja3 With Sheets("Resumen")
uc = .Cells(1, Columns.Count).End(xlToLeft).Column 'Última columna con datos uFd = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Última fila con datos .Range(.Cells(3, "A"), .Cells(uFd, uc)).ClearContents 'Limpiamos los datos anteriores
'Pasamos la colección de los servicios i = 3 For Each item In servO .Cells(i, "A") = item i = i + 1 Next item
'Recorremos los servicios j = 3 Do While .Cells(j, "A") "" For Each celO In Range("C5:C" & uFo) 'Buscamos el servicio en la hoja facturas If Trim(celO) = Trim(.Cells(j, "A")) And celO.Offset(, -2) "" Then 'Si encontramos el servicio y está al lado del mes... Set mes = .Range(.Cells(1, 1), .Cells(1, uc)).Find(celO.Offset(, -2), lookat:=xlWhole) 'Buscamos el mes en la fila 1 de la hoja3 .Cells(j, mes.Column) = celO.Offset(0, 3) 'Pasamos el dato de importe de la hoja facturas ElseIf Trim(celO) = Trim(.Cells(j, "A")) And celO.Offset(, -2) = "" Then 'Si encontramos el servicio y esta entre los mmeses... Set mes = Sheets("Facturas").Range(Cells(celO.Row, 1), Cells(2, 1)).Find("*", after:=Range(celO.Offset(, -2).Address), searchdirection:=xlPrevious) 'Buscamos el mes, desde la columna A del servicio y hacia arriba Set mes = .Range(.Cells(1, 1), .Cells(1, uc)).Find(mes, lookat:=xlWhole) .Cells(j, mes.Column) = celO.Offset(0, 3)
End If Next celO j = j + 1 'Seguimos recorriendo los servicios de la hoja3 Loop
uFd = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Ultima fila con datos For k = 2 To uc + 0 .Cells(uFd, k) = WorksheetFunction.Sum(.Range(.Cells(3, k), .Cells(uFd - 1, k))) Next k End With Sheets("Resumen").Select ultimafila End Sub
Qué grato es haber encontrado tu canal. Había perdido tu pista. Gracias por tus enseñanzas.
Gracias Antonio por tus comentarios. Saludos cordiales.
Hola Elsa, si me ha gustado mucho.
Muy buenos lo ejemplos.
Ya le he dejado mi 👍.
Un cordial saludo.
Gracias Elsa Matilde, tus enseñanzas son valiosas.
Gracias Gamaliel. Me motivas a continuar con esta tarea... ya se viene el próximo video. Saludos cordiales!
Gracias por compartir doña Elsa. En el caso que el rango de búsqueda tenga un filtro el método find no logra encontrar los valores ocultados por el filtro. ¿Que sugiere en esos casos?
Hola. Una opción sería quitar el filtro, hacer la búsqueda y volver a colocar el filtro. Dejo un pequeño ejemplo:
Sub busca_con_filtro()
'dato a buscar en la col C
dato = "mayo"
'se quitan posibles filtros
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
On Error GoTo noEncontrado
Range("C:C").Find(what:=dato, LookIn:=xlValues, lookat:=xlWhole).Activate
'si encuentra el dato guarda la ubicación en una variable o mensaje
MsgBox ubica 'opcional
'vuelve a colocar el filtro que tenía
ActiveSheet.Range("$A$4:$D$26").AutoFilter Field:=1, Criteria1:="" & "COBRANZAS"
Exit Sub
noEncontrado:
MsgBox "No se encontró el texto " & dato & " en la col C"
'vuelve a colocar el filtro que tenía
ActiveSheet.Range("$A$4:$D$26").AutoFilter Field:=1, Criteria1:="" & "COBRANZAS"
End Sub
Otra opción es recorrer el rango con un bucle del tipo For... Next donde se incluyan las celdas ocultas:
Sub busca_con_ocultos()
'dato a buscar en la col C
dato = "OCT"
For i = 5 To Range("A" & Rows.Count).End(xlUp).Row
If Range("C" & i) = dato Then
MsgBox "Dato encontrado en fila " & i
Exit For
End If
Next i
End Sub
@@ElsaMatilde muchísimas gracias por compartir su conocimiento. En mi caso prefiero la opción de quitar y poner los filtros para usar el Find dado que se trata de muchos registros a evaluar. Le saludo desde Costa Rica 🇨🇷.
que buen video, tenés un suscriptor nuevo, enseñas muy bien y muchas gracias por compartir
Buen video 👌
Hola Elsa, muy bueno tu vídeo. // Quisiera aprovechar hacerte una consulta. Yo quiero usar el metodo (Find) para encontrar un valor en una columna, la cual dicha columna tendra en su mayoria valores cero (0).
Supongamos:
En la columna: H10:H20 hay valores que en su mayoria son Ceros (0)
pero en la celda H15 hay un numero 77 y en la celda H19 hay un numero 14.
Entonces quiero que por medio de FIND me encuentre el PRIMER valor DIFERENTE a cero de esa columna.
Que en este ejemplo que te dí debería de devolver 77...
Espero me haya dado a entender, y me puedas ayudar!
Con Find podrías encontrar los valores distintos a 0, con el argumento What:= "*" , si tienes activada la opción de 'ocultar ceros' como explico en el video N° 57 a partir del minuto 6:11. Sino tendrías que utilizar algún tipo de bucle como este:
Sub buscaPrimerValor() 'ajustar col y rango total
For i = 10 To 20
If Range("H" & i) 0 Then resulta = Range("H" & i): Exit For
Next i
'opcional: indicar en qué fila se encontró la celda y su valor.
MsgBox "El primer valor es " & resulta & " y se encuentra en la fila " & i
End Sub
@@ElsaMatilde Gracias, para lo que ocupaba me sirvió el ciclo FOR que me mostraste. Ya que NO podía ocultar los valores cero, siempre debían de ser reflejados en la tabla por eso lo del video N° 57 no me funciona. Saludos!
como obtengo solo la fila o solo la columna de un texto buscado?
En el minuto 13:24 del video podrás observar la macro completa con la información de los posibles resultados: busco.Row y busco.Column (fila y columna del texto encontrado). Address sería para la referencia completa. Sdos!
@@ElsaMatilde exacto, ya lo aclaré y entendí, muchas gracias por compartir tus conocimientos, no tenés idea de lo mucho que me ayudás (cada video tuyo lo veo como 10 veces) gracias y saludos desde bolivia
Elsa Excelente contenid como siempre, te que consultar por algo que no he podido realizar con una macro para eliminar caracteres especiales tipo blanco que existen en una columna del Sku, son espedificamente 5 valores que los destaque en color amarilo, aplique una macro pero no hace lo que requiero. Te dejo el enlace drive.google.com/file/d/1knTvnxE8Aj1CeDe-Uo75AXuzJV7olfO1/view?usp=sharing y ojala me puedas orientar.Gracias.
Hola. No es fácil atender consultas por este medio porque no se pueden mostrar imágenes o códigos. Dejala en el tablón Excel de todoexpertos y desde allí la seguiremos. En principio tu hoja no tiene caracteres especiales como el espacio (CHR(160)), quizás porque ya hiciste correr la macro. Aclarame porqué consideras que esas 5 celdas no están como las esperas... se ven igual al resto. Sdos!
@@ElsaMatilde debido que al momento de hacer un cruce con otra hoja esos 5 sku no me los reconoce. De todas maneras lo voy a plantear en el tablon de todoexpertos. Saludos
@@armandobrito5022 Es otro el motivo entonces. Porque le corrí un código para ver si tenían espacios extras y no los tiene. También podrás comprobarlo colocando en cualquier celda la función: =LARGO(celda) y verás que te da la cantidad justa de los caracteres mostrados. Quizás el problema lo tiene la otra hoja.
@@ElsaMatilde gracias elsa tenias razón era otro el asunto bastante simple cambiar el formato a General y ahí me reconoció el cruce. Se agradece tu colaboración. Saludos
Hola Elsa muy buenos los vídeos, costo mucho en ubicarte.
Por favor necesitaría saber como adjuntar mi archivo para lograr modificar mi Macro VB
La Macro Busca datos y lo Pega en otra Hoja
Necesitaría modificar la macro "Resumen" ya que la misma pasa la información desde la hoja "Facturas" a la "Resumen".
Lo que pretendo de ser factible que al pasar la información a la hoja "Resumen" al no tener el importe del servicio que coloque la fecha del mismo.
Yo lo realice manualmente, pero al sumar los importe, la fecha ( que es una cifra ) también la totaliza.
Quisiera lograr con la macro que:
Primero: Pasar la fecha
Segundo: que a totalizar ignore la fecha y sume lo que es importe solamente.
Sub resumen()
Dim uFo&, uFd&
Dim servO As New Collection
Dim celO As Range, servD As Range, servN As Range, mes As Range
Dim item
Dim primer$, servicio$
uFo = Range("C" & Rows.Count).End(xlUp).Row 'última fila con datos
'Llenamos la colección con los servicios sin repetidos
For Each celO In Range("C5:C" & uFo)
On Error Resume Next
servO.Add celO, CStr(celO)
Next celO
'Trabajamos sobre la hoja3
With Sheets("Resumen")
uc = .Cells(1, Columns.Count).End(xlToLeft).Column 'Última columna con datos
uFd = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Última fila con datos
.Range(.Cells(3, "A"), .Cells(uFd, uc)).ClearContents 'Limpiamos los datos anteriores
'Pasamos la colección de los servicios
i = 3
For Each item In servO
.Cells(i, "A") = item
i = i + 1
Next item
'Recorremos los servicios
j = 3
Do While .Cells(j, "A") ""
For Each celO In Range("C5:C" & uFo) 'Buscamos el servicio en la hoja facturas
If Trim(celO) = Trim(.Cells(j, "A")) And celO.Offset(, -2) "" Then 'Si encontramos el servicio y está al lado del mes...
Set mes = .Range(.Cells(1, 1), .Cells(1, uc)).Find(celO.Offset(, -2), lookat:=xlWhole) 'Buscamos el mes en la fila 1 de la hoja3
.Cells(j, mes.Column) = celO.Offset(0, 3) 'Pasamos el dato de importe de la hoja facturas
ElseIf Trim(celO) = Trim(.Cells(j, "A")) And celO.Offset(, -2) = "" Then 'Si encontramos el servicio y esta entre los mmeses...
Set mes = Sheets("Facturas").Range(Cells(celO.Row, 1), Cells(2, 1)).Find("*", after:=Range(celO.Offset(, -2).Address), searchdirection:=xlPrevious) 'Buscamos el mes, desde la columna A del servicio y hacia arriba
Set mes = .Range(.Cells(1, 1), .Cells(1, uc)).Find(mes, lookat:=xlWhole)
.Cells(j, mes.Column) = celO.Offset(0, 3)
End If
Next celO
j = j + 1 'Seguimos recorriendo los servicios de la hoja3
Loop
uFd = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Ultima fila con datos
For k = 2 To uc + 0
.Cells(uFd, k) = WorksheetFunction.Sum(.Range(.Cells(3, k), .Cells(uFd - 1, k)))
Next k
End With
Sheets("Resumen").Select
ultimafila
End Sub
Te acabo de enviar un mail. Si no lo encontrás (habrás cambiado de correo ? ) escribime al gmail que aparece en la portada de mi sitio web. Sdos!