[RESUELTO] Dividir el contenido de una columna en varias
[RESUELTO] Dividir el contenido de una columna en varias
Hola, tengo una base de datos con una sola columna en la que vienen 5000 códigos, necesito dividir esos 5000 códigos en 60 columnas, ¿habría algún modo de hacerlo?... muchas gracias
Última edición por ciclyc el Jue Dic 08, 2016 10:02 am, editado 2 veces en total.
Open office 4 - windows 10
Re: Dividir el contenido de una columna en varias
Mira en el menú Datos -> Texto a columnas
Saludos
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Dividir el contenido de una columna en varias
Hola.
Se podría hacer con fórmulas o con "texto a columnas" dependiendo del formato que tengan.
Sería conveniente que subieras un archivo de ejemplo para ofrecerte una mejor ayuda.
Saludos cordiales.
Se podría hacer con fórmulas o con "texto a columnas" dependiendo del formato que tengan.
Sería conveniente que subieras un archivo de ejemplo para ofrecerte una mejor ayuda.
Saludos cordiales.
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: Dividir el contenido de una columna en varias
Hola,
con Texto a columnas no se puede o no sé hacerlo.
Adjunto dos archivos para que veais lo que quiero. En el de una columna, viene la base tal y cómo la tendría y en el de dividido en columnas, cómo lo necesitaría...
Muchas gracias
con Texto a columnas no se puede o no sé hacerlo.
Adjunto dos archivos para que veais lo que quiero. En el de una columna, viene la base tal y cómo la tendría y en el de dividido en columnas, cómo lo necesitaría...
Muchas gracias
Open office 4 - windows 10
Re: Dividir el contenido de una columna en varias
Es decir, ¿serían 83.3333 códigos aproximadamente por columna?
Saludos.
Saludos.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Dividir el contenido de una columna en varias
Hola.
Una posible solución, de acuerdo con el archivo adjunto, es pegar en A1 de una hoja en blanco la fórmula y arrastrar:
La constante "3" de la fórmula es porque los datos van de 3 en 3. Tendrías que modificarla de acuerdo con los datos reales, es decir, si como pregunta el compañero fornelasa, son 83 códigos por columna, entonces debes sustituir el 3 por 83.
Saludos cordiales.
Una posible solución, de acuerdo con el archivo adjunto, es pegar en A1 de una hoja en blanco la fórmula y arrastrar:
Código: Seleccionar todo
=INDIRECTO("ORIGINAL.A"&FILA()+SI(COLUMNA()<>1;3*(COLUMNA()-1);0))
' "ORIGINAL" es el nombre de la hoja donde están todos los códigos en una sola columna
Saludos cordiales.
- Adjuntos
-
- una columna_v2.ods
- LibreOffice Calc 5.1.6
- (10.74 KiB) Descargado 588 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: Dividir el contenido de una columna en varias
Muchísimas gracias,
la verdad es que me has salvado la vida, el código es correcto y me ha servido. Sólo una cosa, he tenido que dividir otra columna con 1000 datos en otras sesenta columnas, el problema es que al dividir 1000 entre 60 me sale a 16,66, por lo que si pongo que son 16 datos por columna, me saca 63 columnas y si le pongo 17 me saca 58 columnas más una y media de ceros ya que no hay datos para ellas. Habría algún modo de indicarle a la formula el número de columnas (en este caso 60) en lugar del número de códigos por columna.
Vuelvo a agradeceros vuestra enorme ayuda.
la verdad es que me has salvado la vida, el código es correcto y me ha servido. Sólo una cosa, he tenido que dividir otra columna con 1000 datos en otras sesenta columnas, el problema es que al dividir 1000 entre 60 me sale a 16,66, por lo que si pongo que son 16 datos por columna, me saca 63 columnas y si le pongo 17 me saca 58 columnas más una y media de ceros ya que no hay datos para ellas. Habría algún modo de indicarle a la formula el número de columnas (en este caso 60) en lugar del número de códigos por columna.
Vuelvo a agradeceros vuestra enorme ayuda.
Open office 4 - windows 10
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Dividir el contenido de una columna en varias
Hola.
El archivo adjunto consta de tres hojas:
Contenido de la macro:
Si con esta respuesta consideras que el tema está resuelto, indícalo (¿Cómo marcar como RESUELTO un tema?), ya que, de esta forma, conseguiremos un foro más ordenado.
Saludos cordiales.
Posiblemente sí, ayudándonos de celdas auxiliares donde guardar los elementos que se van copiando. En lugar de ello he programado una macro que lo hace.ciclyc escribió:Habría algún modo de indicarle a la formula el número de columnas (en este caso 60) en lugar del número de códigos por columna.
El archivo adjunto consta de tres hojas:
- * Hoja "PARAMETROS": En ella se indicarán el número de elementos a distribuir, así como el número de columnas. También el tipo de dato de los elementos, número o texto.
- * Hoja "DATOS": En esta hoja se copiarán los elementos a distribuir. Todos en la columna "A" y comenzando en la celda "A1".
- * Hoja "RESULTADO": Aquí se verá el resultado final de la distribución. Se rellenará el número de columnas especificado excepto si número de elementos es menor que número de columnas (obvio).
Contenido de la macro:
Código: Seleccionar todo
REM ***** BASIC *****
Option Explicit
Sub RepartirCodigos()
Dim HojaParametros As Object
Dim ControlElementos As Boolean
Dim ControlColumnas As Boolean
Dim ControlTipo As Boolean
HojaParametros = ThisComponent.Sheets.getByName("PARAMETROS")
With HojaParametros
ControlElementos = (.getCellByPosition(1, 0).getString <> "")
ControlColumnas = (.getCellByPosition(1, 1).getString <> "")
ControlTipo = (.getCellByPosition(1, 2).getString <> "") And _
(.getCellByPosition(1, 2).getString = "NÚMERO" Or .getCellByPosition(1, 2).getString = "TEXTO")
If ControlElementos And ControlColumnas And ControlTipo Then
If .getCellByPosition(1, 2).getString() = "NÚMERO" Then
Call RepartirNUMEROSHojaDATOS(.getCellByPosition(1, 0).getValue, .getCellByPosition(1, 1).getValue)
Else
Call RepartirTEXTOSHojaDATOS(.getCellByPosition(1, 0).getValue, .getCellByPosition(1, 1).getValue)
End If
Else
MsgBox "Las celdas B1, B2 y B3 no pueden estar vacías. Los tipos son NÚMERO o TEXTO", 16, "¡Atención!"
End If
End With
End Sub
Sub RepartirNUMEROSHojaDATOS(NumElementos As Long, NumColumnas As Long)
Dim HojaResultado As Object
Dim HojaDatos As Object
Dim NumElemXColumna As Long
Dim Cociente As Long
Dim Resto As Long
Dim ContadorColumna As Long
Dim ContadorFila As Long
Dim Elemento As Long
Dim Fila As Long
On Error Goto TRATAR_ERROR
If (NumElementos = 0) Or (NumColumnas = 0) Then
Msgbox "Número_de_Elementos o Número_de_Columnas no pueden ser 0 (cero)", 16, "¡Atención!"
Exit Sub
End If
If NumElementos < NumColumnas Then
Msgbox "Número_de_Elementos < Número_de_Columnas, luego no se rellenarán todas las columnas", 64, "¡Atención!"
End If
Cociente = Fix(NumElementos/NumColumnas)
Resto = NumElementos Mod NumColumnas
HojaResultado = ThisComponent.Sheets.getByName("RESULTADO")
HojaDatos = ThisComponent.Sheets.getByName("DATOS")
If Cociente = 0 Then
NumColumnas = Resto
Fila = 0
For ContadorColumna = 0 To NumColumnas - 1
HojaResultado.getCellByPosition(ContadorColumna, 0).setValue(HojaDatos.getCellByPosition(0, Fila).getValue())
Fila = Fila + 1
Next
ElseIf Resto = 0 Then
Fila = 0
For ContadorColumna = 0 To NumColumnas - 1
For ContadorFila = 0 To Cociente - 1
HojaResultado.getCellByPosition(ContadorColumna, ContadorFila).setValue(HojaDatos.getCellByPosition(0, Fila).getValue())
Fila = Fila + 1
Next
Next
Else
Fila = 0
For ContadorColumna = 0 To Resto - 1
For ContadorFila = 0 To Cociente
HojaResultado.getCellByPosition(ContadorColumna, ContadorFila).setValue(HojaDatos.getCellByPosition(0, Fila).getValue())
Fila = Fila + 1
Next
Next
For ContadorColumna = Resto To NumColumnas - 1
For ContadorFila = 0 To Cociente - 1
HojaResultado.getCellByPosition(ContadorColumna, ContadorFila).setValue(HojaDatos.getCellByPosition(0, Fila).getValue())
Fila = Fila + 1
Next
Next
End If
MsgBox "Macro FINALIZADA", 64, "¡Atención!"
Exit Sub
TRATAR_ERROR:
Msgbox "Se ha producido un ERROR", 16, "¡Atención!"
On Error Goto 0
End Sub
Sub RepartirTEXTOSHojaDATOS(NumElementos As Long, NumColumnas As Long)
Dim HojaResultado As Object
Dim HojaDatos As Object
Dim NumElemXColumna As Long
Dim Cociente As Long
Dim Resto As Long
Dim ContadorColumna As Long
Dim ContadorFila As Long
Dim Elemento As Long
Dim Fila As Long
On Error Goto TRATAR_ERROR
If (NumElementos = 0) Or (NumColumnas = 0) Then
Msgbox "Número_de_Elementos o Número_de_Columnas no pueden ser 0 (cero)", 16, "¡Atención!"
Exit Sub
End If
If NumElementos < NumColumnas Then
Msgbox "Número_de_Elementos < Número_de_Columnas, luego no se rellenarán todas las columnas", 64, "¡Atención!"
End If
Cociente = Fix(NumElementos/NumColumnas)
Resto = NumElementos Mod NumColumnas
HojaResultado = ThisComponent.Sheets.getByName("RESULTADO")
HojaDatos = ThisComponent.Sheets.getByName("DATOS")
If Cociente = 0 Then
NumColumnas = Resto
Fila = 0
For ContadorColumna = 0 To NumColumnas - 1
HojaResultado.getCellByPosition(ContadorColumna, 0).setString(HojaDatos.getCellByPosition(0, Fila).getString())
Fila = Fila + 1
Next
ElseIf Resto = 0 Then
Fila = 0
For ContadorColumna = 0 To NumColumnas - 1
For ContadorFila = 0 To Cociente - 1
HojaResultado.getCellByPosition(ContadorColumna, ContadorFila).setString(HojaDatos.getCellByPosition(0, Fila).getString())
Fila = Fila + 1
Next
Next
Else
Fila = 0
For ContadorColumna = 0 To Resto - 1
For ContadorFila = 0 To Cociente
HojaResultado.getCellByPosition(ContadorColumna, ContadorFila).setString(HojaDatos.getCellByPosition(0, Fila).getString())
Fila = Fila + 1
Next
Next
For ContadorColumna = Resto To NumColumnas - 1
For ContadorFila = 0 To Cociente - 1
HojaResultado.getCellByPosition(ContadorColumna, ContadorFila).setString(HojaDatos.getCellByPosition(0, Fila).getString())
Fila = Fila + 1
Next
Next
End If
MsgBox "Macro FINALIZADA", 64, "¡Atención!"
Exit Sub
TRATAR_ERROR:
Msgbox "Se ha producido un ERROR", 16, "¡Atención!"
On Error Goto 0
End Sub
Saludos cordiales.
- Adjuntos
-
- FORO_CALC_Repartir entre varias columnas.ods
- LibreOffice Calc 5.1.6
- (15.94 KiB) Descargado 455 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: Dividir el contenido de una columna en varias
¡¡Excelente trabajo PepeOooSevilla!!
Saludos.
Saludos.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Dividir el contenido de una columna en varias
Muchísimas gracias por la ayuda.
Cierro el tema
saludos
Cierro el tema
saludos
Open office 4 - windows 10
Re: [RESUELTO] Dividir el contenido de una columna en varias
Hola quiero hacer algo similar con una columna con nombres de personas, quiero dividirla en varias columnas de 27 filas casa una. Como podría utilizar la formula que comparten?
NeoOffice 2.2.3 con MacOS 10.4
Re: [RESUELTO] Dividir el contenido de una columna en varias
No es buena idea abrir un tema resuelto, aunque sea similiar, es mejor abrir un nuevo tema, explicando claramente el problema, y tal vez enlazando al tema referido. Un archivo de ejemplo donde se vea lo que quieres lograr, ayudará a quien quiera ayudarte.
Saludos
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro