Buenas tardes,
me gustaría que me ayudaran, tengo una hoja con datos de personas (a priori no se cuántas) y sus datos de la siguiente forma:
PERS1 DATO11 DATO12 DATO13
PERS2 DATO21 DATO22 DATO23
PERS3 DATO31 DATO32 DATO33
y quería pasarlos a otra hoja creando una fila por cada persona y dato, así:
PERS1 DATO11
PERS1 DATO12
PERS1 DATO13
PERS2 DATO21
PERS2 DATO22
PERS2 DATO23
PERS3 DATO31
PERS3 DATO32
PERS3 DATO33
¿Cómo se puede hacer? Muchas gracias!
[RESUELTO] Copiar datos de una hoja a otra
[RESUELTO] Copiar datos de una hoja a otra
Última edición por evafega el Vie Oct 14, 2016 11:40 am, editado 3 veces en total.
Apache Office 4.1.3 MacOS Sierra 10.12.6
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Copiar datos de una hoja a otra
Hola.
Adjunto una primera solución.
¡Atención con los nombres de las hojas! Tendrás que hacer las modificaciones oportunas.
Saludos cordiales.
Adjunto una primera solución.
Código: Seleccionar todo
Option Explicit
Sub CopiarOrdenDeterminado
Dim oDoc As Object ' El documento actual
Dim oHojas As Object ' La colección de hojas del documento
Dim oHoja1 As Object ' Hoja donde copia
Dim oHoja2 As Object ' Hoja donde pega lo copiado
Dim FilaCopia As Long
Dim FilaPega As Long
Dim Persona As String ' El primer dato que se repite
On Error Goto TRATARERROR
oDoc = ThisComponent
oHojas = oDoc.Sheets()
oHoja1 = oHojas.getByName("Hoja1")
oHoja2 = oHojas.getByName("Hoja2")
' ¡Atención! Los datos comienzan en la Fila 2 (El índice de la Fila 2 es 1)
FilaCopia = 1
FilaPega = 1
' ¡Atención! Los datos comienzan en la Columna A (El índice de la Columna A es 0)
Do While oHoja1.getCellByPosition(0, FilaCopia).getString() <> "" ' Mientras no esté vacía la columna A
Persona = oHoja1.getCellByPosition(0, FilaCopia).getString()
With oHoja2
.getCellByPosition(0, FilaPega).setString(Persona)
.getCellByPosition(1, FilaPega).setString(oHoja1.getCellByPosition(1, FilaCopia).getString())
FilaPega = FilaPega + 1
.getCellByPosition(0, FilaPega).setString(Persona)
.getCellByPosition(1, FilaPega).setString(oHoja1.getCellByPosition(2, FilaCopia).getString())
FilaPega = FilaPega + 1
.getCellByPosition(0, FilaPega).setString(Persona)
.getCellByPosition(1, FilaPega).setString(oHoja1.getCellByPosition(3, FilaCopia).getString())
End With
FilaCopia = FilaCopia + 1
FilaPega = FilaPega + 1
Loop
MsgBox "Copia finalizada correctamente", 64, "¡Atención!"
Exit Sub
TRATARERROR:
MsgBox "Se ha producido un ERROR." & Chr(10) & "Compruebe el código.", 16, "¡Atención!"
End Sub
Saludos cordiales.
- Adjuntos
-
- FORO_CALC_Copiar datos de una hoja a otra.ods
- LibreOffice Calc 5.1.5 (estable)
- (20.48 KiB) Descargado 182 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Copiar datos de una hoja a otra
¡¡MUCHAS GRACIAS!!
¡Funciona estupendamente! He metido otra variable ColCopia y otro bucle porque puedo tener varios datos por persona y funciona genial.
Saludos cordiales,
¡Funciona estupendamente! He metido otra variable ColCopia y otro bucle porque puedo tener varios datos por persona y funciona genial.
Saludos cordiales,
Código: Seleccionar todo
ColCopia = 1
' ¡Atención! Los datos comienzan en la Columna A (El índice de la Columna A es 0)
Do While oHoja1.getCellByPosition(0, FilaCopia).getString() <> ""
Persona = oHoja1.getCellByPosition(0, FilaCopia).getString()
With oHoja2
Do While oHoja1.getCellByPosition(ColCopia, FilaCopia).getString() <> ""
.getCellByPosition(0, FilaPega).setString(Persona)
.getCellByPosition(1, FilaPega).setString(oHoja1.getCellByPosition(ColCopia, FilaCopia).getString())
FilaPega = FilaPega + 1
ColCopia = Colcopia + 1
Loop
End With
FilaCopia = FilaCopia + 1
' FilaPega = FilaPega + 1
ColCopia = 1
Loop
Última edición por xiseme el Mié Oct 12, 2016 9:48 am, editado 1 vez en total.
Razón: Etiquetas CODE
Razón: Etiquetas CODE
Apache Office 4.1.3 MacOS Sierra 10.12.6