Obtener la dirección de una celda según el valor en otra

Tengo un problema con un ejercicio que tengo en excel, el asunto es que tengo varios archivos donde la cabecera de una columna dice [COSTO] pero esta cabecera puede estar en diferentes posiciones

ejemplo a1 = COSTO, J11= COSTO, P24=COSTO obviamente los costos estan en las filas a2,j12 y p25

Recuerden que estos costos están en diferentes hojas de un mismo archivo excel.

Lo que intento hacer es en una sola hoja, en la intentar d2 tener el rotulo COSTO y debajo que aparezcan todos los costos de las otras hojas.

Quizá suene raro esto, pero imaginen que a ustedes les dan 500 archivos de excel que no tienen la estructura de tabla, sino parecen informes donde el costo esta en diferentes columnas y filas, ¿qué sucede si les piden armar una tabla con todos los costos ordenados?

¿Yo creo que debería ir hoja por hoja y hacer un copiar/pegar, pero hay forma de hacerlo más automático?

2 Respuestas

Respuesta
1
Respuesta
1

¡H o l a! y bienvenida a TodoExpertos.

Prueba la siguiente macro, cambia en la macro "Hoja" por el nombre de tu hoja donde quieres el concentrado.

Sub Concentrado()
  Dim sh1 As Worksheet, sh As Worksheet
  Dim f As Range, lr As Long
  Application.ScreenUpdating = False
  '
  Set sh1 = Sheets("Hoja")
  sh1.Range("D3:D" & Rows.Count).ClearContents
  '
  For Each sh In Sheets
    If sh.Name <> sh1.Name Then
      Set f = sh.Cells.Find("Costo", , xlValues, xlWhole)
      If Not f Is Nothing Then
        lr = sh.Cells(sh.Rows.Count, f.Column).End(3).Row
        sh.Range(f, sh.Cells(lr, f.Column)).Offset(1).Copy
        sh1.Range("D" & Rows.Count).End(3)(2).PasteSpecial xlPasteValues
      End If
    End If
  Next
  '
  Application.ScreenUpdating = True
  MsgBox "Fin"
End Sub

Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Para ejecutarla presiona F5

Gracias por tu respuesta, pero solo me aparece una pantalla que me dice FIN

por ejemplo en la celda M6 esta el rotulo "COSTO" y en la celda M7 esta el valor 1,000

Como puedo hacer para que el valor 1000 aparezca en una hoja2 en la celda B2 ?

Osea recuerda que en todo momento no sabes donde es la celda exacta del texto COSTO

solo sabes que al ubicar ese texto en algun lugar de la hoja el valor que necesitas esta en la fila de abajo ..... Sera que me deje entender ?  Gracias experto por tu preocupacion, necesito algo de ayuda en esto..... Linda Noche para ti

Hola

Me olvide decirte que los datos que tengo en esas celdas se borran al ejecutar la macro

sera que puedes ayudarme? eso de usar macros me parece excelente se ve bien pero ojala se pueda

Osea recuerda que en todo momento no sabes donde es la celda exacta del texto COSTO

Eso hace la macro, busca en todas las hojas y en todas sus celdas.



Me olvide decirte que los datos que tengo en esas celdas se borran al ejecutar la macro

Borra esta línea de la macro:

Sh1.Range("D3:D" & Rows. Count). ClearContents


¿Cómo puedo hacer para que el valor 1000 aparezca en una hoja2 en la celda B2?

Cambia en la macro "Hoja" por hoja2.

Prueba otra vez

¡Gracias! El código que enviste resulto muy útil y ya solucione mi problema te agradezco ! Tu aporte fue realmente muy útil Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas