Duda y perdón por ser pesado.

Hola perdona tanta insistencia. He cerrado la pregunta que realicé ayer:
"Buenas tardes, saludos!
No tengo mucha idea de excel ni macros. Necesito ayuda, la cuestión es la siguiente:
Tengo un archivo excel con 1000 hojas y necesito copiar la celda E10 de cada una de ellas en un libro u hoja nueva en la columna a1 hasta la a1000. El dato de la columna E10 de cada hoja es texto.
Gracias de antemano!"
Diste solución perfecta a mi duda y hoy me asalta otra curiosidad, ¿cómo puedo hacer para que en esta misma situación el valor que se copia sea la celda que hay inmediatamente al lado derecho de otra?
Ejemplo: forma de pago dato
                 Importe total dato resultante de fórmula
Muchas gracias por tu ayuda.

1 respuesta

Respuesta
1
Creo que no entendí muy bien tu pregunta, ¿quieres qué por ejemplo si tienes E10 como referencia se copie solo la celda F10? ¿O quieres que se copie tanto E10 como F10? ¿O quieres para una celda por el valor inmediato derecho?
U otra, ¿esta condicionada la celda de referencia a lo que diga como texto en ella?, por ejemplo puedo hacer que condicione lo de copiar si en la celda dice por ejemplo "forma de pago" o "importe total" (cualquiera de las dos o las dos ) y aparte que copie también la celda inmediata derecha.
Mira si lo que quieres es lo primero que te pregunte es esto (tanto E10 como la celda inmediata derecha):
Sub copiar()
Workbooks. Add
Workbooks("Libro2.xlsm").Activate
fila = 1
Dim i As Long
For i = 1 To 1000
Sheets(i).Select
Range("E10", Range("E10").Offset(0, 1)).Select
Selection.Copy
Workbooks(Workbooks.Count).Sheets(1).Cells(fila, 1).PasteSpecial
fila = fila + 1
Next i
End Sub
o (solo la celda inmediata derecha):
cambia lo de negritas por esto
Range("E10").Offset(0, 1).Select
o celda x valor inmediato derecho:
Range("x").Offset(0, 1).Select
x=celda referencia
Si la cosa se trata de la otra pregunta necesitaría que me detalles como esta el asunto
Tienes razón no me explique del todo bien... lo siento.
Me refiero a que esté condicionada la celda de referencia a lo que diga como texto en ella.
Osea que copie la celda de al lado de donde ponga precio total sin tener que especificar una celda concreta.
Aun así con la macro que me has pasado me he orientado bastante bien de como sería.
Muchísimas gracias.
No se si quieras buscar "precio total" en toda una columna (por ejemplo en toda la columna E), copiar el valor que este inmediato a su derecha y hacer lo mismo por cada valor "precio total" que se encuentre en esa columna.
En dado caso de que esto sea lo que quieras necesitas hacer un bucle por ejemplo:
For Each celda In Sheets("Hoja1").Range("E1", Range("E1").End(xlDown))
If celda = "precio total" Then
celda.Offset(0, 1).Select
Lo de Range("E1"). End(xlDown) es para evitar que lo haga en toda la columna, esto permite que evalue solo en las celda que tienen un valor (si hay una celda vacia se corta el rango)(es decir desde E1 hasta la ultima celda con valor).
Espero te sirva... cualquier duda que tengas con tu macro me echas un grito
Sobrex!
Juasss! Ahora si que me he perdido...
No consigo integrarlo en la macro, es más complicado de lo que imaginaba.
Ok...
¿Tiene qué ver el mismo archivo del que originalmente tenias duda? Porque a lo mejor me estoy confundiendo... ¿quieres hacer lo mismo que en tu archivo original sin tener que especificar una celda?, entonces:
Primeramente, ¿quieres evaluar todo un rango? ¿Cuál?... entiendo que la condición es el texto "precio total", ¿este es exacto en la celda? ¿Es decir "precio total" es lo único que debe estar en la celda o es parte de la celda?
Si me explicaras un poquito más lo que pretendes lograr con la macro puedo ayudarte de mejor manera
Exacto a todas las cuestiones.
Quiero aprender a aplicarlo al archivo de la duda original.
Sin especificar una celda.
La condición de búsqueda tiene que ser el texto de la celda "precio total".
Solo hay una celda en cada hoja en la que ponga exactamente "precio total" y necesito que copie el valor de la celda inmediatamente a la derecha de esta.
El dato que hay en la celda a la derecha de "precio total" es el resultado de la suma de varias celdas. En las pruebas que he hecho me salia el error #valor#.
Lo que pretendo es listar en un documento nuevo el valor precio total de cada una de las 1000 hojas para facilitar una labor contable.
Miles de gracias por tu ayuda e interés. Eres admirable de verdad.
Ok mira el código seria así:
Sub copiar()
Workbooks. Add
Workbooks("Libro14.xlsm").Activate
fila = 1
Dim i As Long
For i = 1 To 1000
Sheets(i).Select
Range(Sheets(i).Cells.Find("precio total").Address).Offset(0, 1).Select
Selection.Copy
Workbooks(Workbooks.Count).Sheets(1).Cells(fila, 1).PasteSpecial
fila = fila + 1
Application.CutCopyMode = False
Next i
End Sub
prueba y dime que onda simón... sobrex!
Graaandeeeeeeee!
Justo lo que necesitaba. He agregado en el pegado especial lo que está en negrita
Workbooks(Workbooks.Count).Sheets(1).Cells(fila, 1).PasteSpecial (Excel.xlPasteValues)
Y todo perfecto.
Muchísimas gracias por tu ayuda! Fantástico!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas