El caso es que quería que me lo pusiera ordenado dentro de la misma
columna en diferentes filas. Además, para rizar el rizo, sería
interesante poder añadir otro valor al lado del nombre en función de
su posición. Es decir, si en A1 Pepe va antes del ";", que ponga una
"P", a Juan y Pedro "D", a Luis una "M". Y abajo, en A2, a Pedro otra
"P", a Manuel...Luis otra "D", a Victor y Antonio otra "M".
Espero haberme explicado bien.
Muchas gracias por vuestra ayuda.
(hasta donde se) pocas veces lo imaginado (desde este lado del mensaje) ha coincidido con la realidad (del que consulta)
(entonces) es mas factible si tu "ilustracion" la complementas con los rangos y dos o tres ejemplos mas... "reales" (p.e.)
si tienes:
[A1] Pepe; Juan, Pedro; Luis, Manuel y Enrique
[A2] Pedro; Manuel, Fernando, Luis; Victor y Antonio
-> cual es el resultado que esperas obtener y "donde/como/por que/..." (exactamente) ???
saludos,
hector.
__ OP __
> Estoy buscando algun metodo (con o sin macro) para que me separe un listado que tengo en una serie de celdas.
> Imaginaos, es algo asi:
> A1
> Pepe; Juan, Pedro; Luis, Manuel y Enrique
> A2
> Pedro; Manuel, Fernando, Luis; Victor y Antonio
> El caso es que queria que me lo pusiera ordenado dentro de la misma columna en diferentes filas.
> Ademas, para rizar el rizo, seria interesante poder anadir otro valor al lado del nombre en funcion de su posicion.
> Es decir, si en A1 Pepe va antes del ";", que ponga una "P", a Juan y Pedro "D", a Luis una "M".
> Y abajo, en A2, a Pedro otra "P", a Manuel...Luis otra "D", a Victor y Antonio otra "M".
> Espero haberme explicado bien...
Buenas Hector.
Ya veo que no me he explicado demasiado allá, jejeje.
Pretendo obtener en otra columna la lista, de tal manera que de A1 se
genere en otra columna (por ejemplo en C):
[C] [D]
Pepe P
Juan D
Pedro D
Luis M
Manuel M
Enrique M
De [A2] , en otra columna (la que sea), lo mismo, el listado en la
columna que sea (por ejemplo en E y F):
[E] [F]
Pedro P
Manuel D
Fernando D
Luis D
Victor M
Antonio M
Ahora mejor?
Un saludo.
tratado de encontrar alguna solucion sin macros... puedes confirmar algun "patron" (p.e.)
- siempre 6 nombres ?
- solo 3 "grupos" (P, D, M) ?
- la diferencia es siempre ";" ?
- ???
saludos,
hector.
__ OP __
> Ya veo que no me he explicado demasiado alla, jejeje.
> Pretendo obtener en otra columna la lista, de tal manera que de A1 se genere en otra columna (por ejemplo en C):
> [C] [D]
> Pepe P
> Juan D
> Pedro D
> Luis M
> Manuel M
> Enrique M
> De [A2] , en otra columna (la que sea), lo mismo, el listado en la columna que sea (por ejemplo en E y F):
> [E] [F]
> Pedro P
> Manuel D
> Fernando D
> Luis D
> Victor M
> Antonio M
>
> Ahora mejor?
__ previos __
On 8 mayo, 08:59, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:
"Juan" <jua...@gmail.com> escribi� en el mensaje de noticias
news:0b362fe6-d973-4592...@z7g2000vbh.googlegroups.com...
Buenas.
Estoy buscando alg�n m�todo (con o sin macro) para que me separe un
listado que tengo en una serie de celdas.
Imaginaos, es algo as�:
A1
Pepe; Juan, Pedro; Luis, Manuel y Enrique
A2
Pedro; Manuel, Fernando, Luis; Victor y Antonio
El caso es que quer�a que me lo pusiera ordenado dentro de la misma
columna en diferentes filas. Adem�s, para rizar el rizo, ser�a
interesante poder a�adir otro valor al lado del nombre en funci�n de
su posici�n. Es decir, si en A1 Pepe va antes del ";", que ponga una
> El listado esta separado por comas y punto y coma
> ... los grupos por punto y coma y dentro de cada grupo los individuos estan separados por comas.
> ... el primer grupo es P, los que van detras del primer punto y coma son D
> los que van detras del segundo punto y coma son M y los que van detras del tercer punto y coma son DL.
> He puesto en el ejemplo solo 3 grupos por simplificar y no complicar demasiado, pero en realidad son 4 grupos...
espero que no se haya quedado nada "en el tintero" (ni siquiera por "simplificar" la consulta)
recuerda que las propuestas se hacen en proporcion con los detalles ofrecidos en la consulta)
prueba con los siguientes procedimientos y ejecutas el sub "separados" desde la hoja con los datos
si NO empiezas en la fila 1... te toca hacer las enmiendas necesarias (?)
saludos,
hector.
Dim Matriz
Private Function Matriz_XL()
Matriz_XL = Matriz
End Function
Sub Separados()
Dim Clave, Texto As String, Grupos, Personas, _
Fila As Integer, g As Byte, p As Byte
Clave = Array("P", "D", "M", "DL")
For Fila = 1 To [a65526].End(xlUp).Row
With Application
Texto = .Substitute(.Substitute(Range("a" & Fila), " y ", ","), " ", "")
End With
Grupos = Split(Texto, ";", , vbTextCompare)
For g = 0 To UBound(Grupos)
Personas = Split(Grupos(g), ",", , vbTextCompare)
Matriz = Personas
p = UBound(Personas) + 1
With Cells(65536, Fila * 2).End(xlUp)
.Offset(1).Resize(p).Value = Evaluate("transpose(matriz_xl())")
.Offset(1, 1).Resize(p).Value = Clave(g)
End With
Next
Next
End Sub
On 8 mayo, 15:57, "pepe" <p...@hotmail.com> wrote:
> Puedes separarlo utilizando la opción texto en columnas.
> En una primera pasada separas por punto y coma, tendrás entonces en la
> primera columna el grupo P, en la segunda el D y en la tercera columna el
> grupo M.
> A continuación insertas la columnas necesarias entre la columna del grupo P
> y la del grupo D, seleccionas la columna del grupo P y vuelves a separar
> utilizando la copion texto en columnas. Repites lo mismo con las demás
> He estado probando la macro y como soy algo nuevo no la entiendo muy bien.
> Me crea efectivamente un listado en una columna, separando bien por los puntos y comas
> pero no identifica los nombres, me sale en cada celda #�NOMBRE?
> lo que creo que es por que no identifica el nombre en el listado.
> Como te he dicho, soy algo nuevo y se me escapa como funciona la funcion substitute
> por si fuera algun parametro dentro de esa funcion...
es (casi) seguro que la macro la pusiste en un modulo "de clase" (probablemente en el modulo de codigo de "esa" hoja ?)
y NO en un modulo de codigo estandar, que es donde debiera haber quedado (desde vba: menu: insertar / modulo) (???)
prueba nuevamente (incluso) con esta version recortada (pero en un modulo de codigo estandar)...
Sub Separados()
Dim Clave, Texto As String, Grupos, Personas, _
Fila As Integer, g As Byte, p As Byte
Clave = Array("P", "D", "M", "DL")
For Fila = 1 To [a65536].End(xlUp).Row
With Application
Texto = .Substitute(.Substitute(Range("a" & Fila), " y ", ","), " ", "")
End With
Grupos = Split(Texto, ";", , vbTextCompare)
For g = 0 To UBound(Grupos)
Personas = Split(Grupos(g), ",", , vbTextCompare)
p = UBound(Personas) + 1
With Cells(65536, Fila * 2).End(xlUp)
.Offset(1).Resize(p).Value = Application.Transpose(Personas)
.Offset(1, 1).Resize(p).Value = Clave(g)
End With
Next
Next
End Sub
saludos,
hector.