............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Combinar varias columnas de texto en una sola

Ver el tema anterior Ver el tema siguiente Ir abajo

Combinar varias columnas de texto en una sola

Mensaje por WARCRAFT el Mar Nov 30, 2010 7:19 pm

Tengo el siguiente problema:

5 columnas de texto con aproximadamente 50 filas en cada una, (una tiene 14 y otra puede tener 120) que quiero combinar entre si en todas las posibilidades.
Es decir todos los datos de cada fila de la columna a combinados con la columna b, el resultado de estas combinaciones con todos los registros de la columna c, el resultado de esta tercera combinación con los datos de la columna d y de nuevo el resultado de esta última combinación con todos los de la columna e

Gracias
Adjunto imagen

Hoja1

 ABCDE
1VENDEDORESCIUDADPRODUCTOMESaños
2josemadridquesoenero2010
3carlosbarcelonaneumaticosfebrero2011
4juanburgospanmarzo2012
5luismurcialecheabril2013
6carmenvalenciacochesmayo2014
7anabilbaomotosjunio2015
8maria televisoresjulio2016
9rosa ordenadoresagosto2017
10  telefonosseptiembre2018
11  librosoctubre2019
12  discosnoviembre2020
13  lapicesdiciembre2021
14  agua 2022


Excel tables to the web >> [Tienes que estar registrado y conectado para ver este vínculo]



avatar
WARCRAFT

Masculino Cantidad de envíos : 8
Edad : 55
Ciudad - Pais : Madrid - España
Version de Excel : 2007
Fecha de inscripción : 08/04/2008

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por GalileoGali el Miér Dic 01, 2010 8:50 pm

a ver esto

Código:
Sub combinar()
Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long, desplaz As Integer
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "Hoja1" Then
sh.Delete
End If
Next
Application.DisplayAlerts = True
desplaz = 7
Set hojabase = Application.ActiveWorkbook.Sheets("Hoja1")
With hojabase
.Range("G1:" & .Cells(Rows.Count, Columns.Count).Address).Clear
Set nvahoja = ActiveSheet
For i = 1 To Application.CountA(hojabase.Range("A2:A250").Offset(0, 0))
    For j = 1 To Application.CountA(hojabase.Range("A2:A250").Offset(0, 1))
        For k = 1 To Application.CountA(hojabase.Range("A2:A250").Offset(0, 2))
            For l = 1 To Application.CountA(hojabase.Range("A2:A250").Offset(0, 3))
                For m = 1 To Application.CountA(hojabase.Range("A2:A250").Offset(0, 4))
                nvahoja.Cells(n Mod Rows.Count + 1, desplaz + Int(n / Rows.Count) + 1) = .Cells(1 + i, 1) & "|" & .Cells(1 + j, 2) & "|" & .Cells(1 + k, 3) & "|" & .Cells(1 + l, 4) & "|" & .Cells(1 + m, 5): n = n + 1
               
                If nvahoja.Cells(n Mod Rows.Count + 1, Int(n / Rows.Count) + 1).Address = nvahoja.Cells(Rows.Count, Columns.Count).Address Then
                Worksheets.Add after:=Sheets(Sheets.Count)
                Set nvahoja = ActiveSheet
                desplaz = 0
                End If
               
                Next m
            Next l
        Next k
    Next j
Next i
.Range("G1:" & .Cells(Rows.Count, Columns.Count).Address).EntireColumn.AutoFit

End With


End Sub



Última edición por GalileoGali el Miér Dic 01, 2010 10:08 pm, editado 1 vez

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por moises melgar el Miér Dic 01, 2010 9:46 pm

hola gali aqui en el foro momentaneamente ya que estoy en mi semana de examenes, pero nada mas para comentar.

funciona perfecamente ya me habia imaginado la macro asi por lo que solo sugiero que chequen las combinaciones posibles totales ya que este no debe rebasar el numero de filas que tiene excel
num de combinaciones posibles es el producto de numero de datos por cada columan a combinar
en el ejemplo:
num de combinaciones
=PRODUCTO(CONTARA(A:A)-1,CONTARA(B:B)-1,CONTARA(C:C)-1,
CONTARA(D:D)-1,CONTARA(E:E)-1)
los veo hasta el sabado
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 531
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por GalileoGali el Miér Dic 01, 2010 9:51 pm

La macro que hice al terminar una fila sigue en la de al lado y al llegar la ultima celda de la hoja, añade una nueva hoja para seguir acomodando las generadas

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por moises melgar el Miér Dic 01, 2010 9:52 pm

ohh me retracto esta super genial has pensado en todo mas aya de la idea que tuve
gracias por aclara esto

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 531
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por GalileoGali el Miér Dic 01, 2010 10:12 pm

En la celda F2 puedes encontrar una matrcial que resuelve el conteo de las combinaciones posibles (para un maximo de 250 que fue lo que propuso WARCRAFT)

=PRODUCTO(SUBTOTALES(3;DESREF(A2:A250;0;{0;1;2;3;4})))

DEBE ENTRARSE CON ctrl + mayus + enter

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por GalileoGali el Miér Dic 01, 2010 10:29 pm

De todas maneras creo que seria necesario, cada vez que se termina una hoja, guardarla como un archivo plano: CSV o txt y eliminar la hoja, porque se pone muy pesado.......

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por WARCRAFT el Jue Dic 02, 2010 6:11 am

Muchas gracias Gali, sabía que podía confiar en vos.
La verdad es que mi pregunta esta basada en la necesidad de combinar 5 columnas con mas filas de las propuestas, exactamente 4, 8, 7, 192 y 5, por lo que el resultado en número de filas es de 4*13*7*192*8 = 559.104 registros, por lo que tu trabajo funciona perfectamente, el proceso dura unos minutos pero es eficaz.
Por curiosidad del motivo de mi pregunta, la necesidad esta en la creación de una lista para enviar a Google de una combinación de palabras para el buscador por motivos de trabajo y aparecer en los enlaces patrocinados.

Gracias igualmente a Moises.
avatar
WARCRAFT

Masculino Cantidad de envíos : 8
Edad : 55
Ciudad - Pais : Madrid - España
Version de Excel : 2007
Fecha de inscripción : 08/04/2008

Volver arriba Ir abajo

Re: Combinar varias columnas de texto en una sola

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.