Buscar un dato en un libro y obtener el nombre de la hoja donde se encuentre

Requiero buscar un valor en un libro con doce hojas (Enero a Diciembre) y luego obtener el nombre del libro donde se haya conseguido ese valor, la situación es que requiero que sólo busque el valor en la columna "B" de cada hoja, específicamente en el rango "B9:B109", el valor exacto y completo de la celda (xlWhole).

Mi necesidad es obtener el mes en que se consiguió el dato, puede ser con un msgbox.

El dato que busco esta ubicado en una hoja del libro Sheet("Poliza"). Range("C11")

Sub Buscar ()
'Estoy ubicado en la hoja "Póliza"
poliza = ActiveSheet.Range("C11").Text 
mes = 'Aqui requiero la macro que me obtenga el nombre de la hoja donde se encuentra el dato en la columna "B9:B109"
Msgbox ("Su póliza se encuentra en el mes " & Mes)
End Sub

2 respuestas

Respuesta
3

Te anexo la macro actualizada

Sub Buscar()
'Act.Por.Dante Amor
    Set h1 = Sheets("Poliza")
    num = h1.Range("C11")
    For Each h In Sheets
        Set b = h.Columns("B").Find(num, lookat:=xlWhole)
        If Not b Is Nothing Then
            MsgBox "Su póliza se encuentra en el mes " & h.Name
        End If
    Next
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta
1

¿Y tiene que ser con código? Porque creo que puede hacerse con una fórmula matricial (hay que introducirla pulsando mayúsculas control entrada al mismo tiempo).

Por ejemplo, para buscar 25 en las 12 hojas de los meses la fórmula sería:

=INDICE(TEXTO(--"9-1-1"+(FILA(INDIRECTO("1:12"))-1)*30;"mmmm");COINCIDIR(1;--(CONTAR.SI(INDIRECTO("'"&TEXTO(--"9-1-1"+(FILA(INDIRECTO("1:12"))-1)*30;"mmmm")&"'!B9:B109");25)>0);0))

Hola muchas gracias por tu respuesta, lo precio mucho pero realmente si lo necesito en código, ya que la intención que tengo es poder usar el nombre de la hoja para que se guarde un archivo en un folder que tendrá dicho nombre, es decir, no necesito específicamente un "msgbox", lo que necesito es guardarlo como string para luego usarlo como parte de la ruta de guardado. por ejemplo:

Sub Buscar ()
Dim mes as string
Dim ruta as string
'Estoy ubicado en la hoja "Póliza"
poliza = ActiveSheet.Range("C11").Text 
mes = 'Aqui requiero la macro que me obtenga el nombre de la hoja donde se encuentra el dato en la columna "B9:B109"
ruta = ThisWorkbook.Path & "\" & mes
Sheet("Póliza").select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & "\" & poliza & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Justo esa es la macro que requiero que realice un botón que he programado con  otras órdenes.

A ver en que me pueden ayudar,  Muchas Gracias!!!

----------------------------------------------------------------------------------------------------------------------------------------------------------

jrgces: Intenté colocar la formula que me recomiendas pero me dice error de sintaxis y no me deja aplicarla y como no conozco bien la sintaxis de INDIRECTO y de INDICE no se como ajustarla. Estaba pensando lo siguiente:

Primero sólo me sirve si el valor que arroja es el nombre de la hoja (son los nombres de los meses y me sirve el formato "mmmm").

Luego, Si fuera posible introducir una formula de esa manera en la hoja "Póliza", (la cual es la hoja numero 13), en cualquier celda como por ejemplo en la celda D12, entonces puedo usar:

Dim nombre as string
nombre = Range("D12").text

Sin embargo es importante que el rango en donde busque el valor sea únicamente en la columna B de cada hoja, ya que como son identificaciones numéricas, es probable que si lo busca en toda la hoja lo pueda confundir con otros valores ubicados en la hoja en cualquier otra columna.

Muchas gracias jrgces, si crees que tu fórmula puede resolverme eso te lo agradecería mucho.

Ya he conseguido la macro que requería y he calificado esa respuesta, sin embargo me ha dejado intrigado tu fórmula, me gustaría que si es posible me ayudes a descifrarla para aprender de ella, si no se puede te calificaré de todos modos, muchas gracias!

José Armando Zambrano

He subido un ejemplo con la fórmula trabajando (o al menos funciona en mi Excel 2010) a http://www.jrgc.es/ejemplos/20170610a.xlsx

Respecto a su funcionamiento, se basa en la creación de referencias a cada una de las 12 hojas de los meses, para luego usar la función COINCIDIR sobre ellas.

Si te interesa el tema, tengo algo escrito sobre él en http://www.jrgc.es/trucos006.htm

Saludos_

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas