Copiar datos de celdas

Hola, espero estés bien. Quiero hacerte una consulta lo que pasa es que tengo un archivo de Excel con muchas hojas, lo que quiero es copiar en una hoja nueva los datos que se encuentran desde la celda B13 a la B17 de alguna de las hojas existente, en una sola columna por ejemplo en la columna A. Además de eso necesito que en la columna B al frente de cada celda copiada me coloque el nombre de la hoja en la que se copio.
Ejemplo:
Tengo un archivo de 40 hojas desde la 1 hasta la 40 (hoja1, hoja2,..., hoja40)
Quiero copiar de la hoja3, hoja6, hoja18, hoja24, hoja2, hoja37 y otras, los datos que se encuentran desde la celda B13 a la B17 y colocarlos en una hoja nueva llamada hoja41 en la columna A y al frente de cada celda copiada el nombre de la hoja donde fue extraída.
Algo así:
Si en la hoja2, hoja17, y hoja23 desde la celda B13 a la B17 tengo esto.
hoja2  hoja17  hoja23
Luis     Marlon  Laura
Carlos Camila  Carlitos
María María Melisa
Tania Pico Barco
Pedro Mesa Camisa
Quiero que en la hoja41 en la celda A y B me queden lo siguiente.
Hoja41
Celda A Celda B
Luis hoja2
Carlos hoja2
María hoja2
Tania hoja2
Pedro hoja2
Marlon hoja17
Camila hoja17
María hoja17
Pico hoja17
Mesa hoja17
Laura hoja23
Carlitos hoja23
Melisa hoja23
Barco hoja23
Camisa hoja23
Si es posible cuando un dato se repita lo coloque una sola ves en la columna A y en la B coloque los nombres de las hojas que lo contienen.
Respuesta
1
Lo que planteas esta a mi alcance salvo: "Si es posible cuando un dato se repita lo coloque una sola ves en la columna A y en la B coloque los nombres de las hojas que lo contienen."
Ahora, indicas que el rango B13 a la B17 es igual en todas las hojas que te interesa extraer, pero debes indicarme el nombre de todas y cada una de las hojas que deseas copiar. En la columna A de la hoja41
claro ya sabes que en cada columna solo caben 65536 datos
Ok. No hay problema con eso
La idea es que me des una estructura para yo realizar la macro, y si el rango de B13 a la B17 es la misma en todas las hojas y como te digo quiero copiar los datos de esas celdas en la columna A de la nueva hoja y al frente de cada dato el nombre de la hoja de la que fue extraída.
Y me podrías hacer un ejemplo con los datos que te di en la primera pregunta.
Acá va el ejemplo:
Sub cop()
Dim i As Integer
Dim nh As String
Dim RG As String
Dim hoja As Sheets
For Each Sheet In Sheets
If Sheet.Name = "Hoja2" Or Sheet.Name = "Hoja17" Or Sheet.Name = "Hoja23" Then
Sheet.Activate
    nh = ActiveSheet.Name
Range("B13", "B17").Select
Selection.Copy
Hoja7.Activate
Range("a65535").Select
Selection.End(xlUp).Select
If Selection.Address <> "$A$1" Then Hoja41.Range(Cells(Selection.Row + 1, 1), Cells(Selection.Row + 1, 1)).Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False
RG = Replace(Selection.Address, "A", "B")
Range(RG).Value = nh
nh = ""
Application.CutCopyMode = False
End If
DoEvents
Next
Set hoja = Nothing
End Sub
en esta linea If Sheet.Name = "Hoja2" Or Sheet.Name = "Hoja17" Or Sheet.Name = "Hoja23" Then
determinas las hojas que vas a copiar en hoja41,
bye

1 respuesta más de otro experto

Respuesta
1
Como las hojas no tienen un orden para ser copiadas, entonces el proceso no puede automatizarse all 100%: tienes que activar la hoja y luego ejecutar el procedimiento, que es el siguiente:
-
Sub TRASPASA()
Dim C As Range
Dim HOJA As String
Dim I As Integer
 For Each C In Sheets("Hoja41").Range("B:B")
  Debug.Print C.Address
  If C.Value = "" Then Exit For
 Next C
 Range("B13:B17").Copy Destination:=Sheets("Hoja41").Range(C.Address)
 HOJA = ActiveSheet.Name
 For I = 1 To 5
  If Not C.Offset(1, 0) = "" Then
   C.Offset(I - 1, 1).Value = HOJA
  End If
 Next
End Sub
-
Copia y pega este código en un MODULO. Insértalo si es necesario.
Ejecútalo desde Vista/Macros/Ejecutar, después de activar la hoja que deseas traspasar.
-
El caso de los repetidos, te lo resuelvo en pregunta aparte.
-
Ok. Gracias por todo verificando...
El código trabaja muy bien el pequeño problemita es que hay que activar la hoja y en verdad son muchas.
Pero funciona estoy validando para ver como hago para automatizarlo un poco más.
Y luego que tengo todos los resultados en la hoja41 puedo hacer una macro para que me elimine toda la fila de los repetidos de la columna A

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas