Macro para repartir nombres por series.
Hola Experto, te cuento:
Tengo una columna llena de nombres, columna A, necesito extraer los primeros 16 nombres y repartirlos en la primera fila de cada columna que corresponda a ese nombre, pero que no aparezca el nombre sino una cruz, por, porque ya la columna tiene nombre. Luego que reinicie el ciclo nuevamente, extrayendo los siguientes 16 nombres siguientes y los reparta en la siguiente fila, o sea fila 2, en la columna con el nombre correspondiente, y así susesibamente hasta finalizar. En el caso de encontrar 2 nombres iguales, que coloque 2 cruces, por por, en la misma celda dentro de esos 16 nombres.
Ej.
Juan lucas ines maría juan jorge santiago diego
María X X X X X X
Lucas
Ines
María
Diego
Hasta 16 nombres.
Cuando termine de revisar y repartir esta serie de 16 nombres, tome otra serie de 16 nombres y haga lo mismo, pero las cruces que resulten de esta nueva serie, queden debajo de las primeras.
Ej: lucas ines maría juan jorge santiago diego
Fernando X X X X X X
Lucia X X X X
Ernesto
Jorge
Santiago
Ines
María
Hasta 16 nombres y luego tomar otros16 nombres y hacer lo mismo y así sucesivamente hasta terminar la columna ''A''
Las cruces indican los nombres que coinciden con los que están en la columna.
Un colega tuyo me dio esta macro:
Function contarx(celdas As Range, ByVal name As String) As String
Dim cont As String
Dim rnCell As Range
Application.Volatile
For Each rnCell In celdas
If rnCell.Value = name Then
cont = cont & "x"
End If
Next rnCell
contarx = cont
End Function
Y es muy buena la macro, pero el problema fue, que cada vez que quiero que se ejecute, tengo que escribir en cada columna :
=contarx($A$1:$A$16;B1) y me llevaría mucho tiempo , porque son cientos de nombres que tengo en la columna ''A''y por cada 16 nombres tendría que escribirlo.
Necesito una macro que lo haga automáticamente el desglose de todos los nombres, sin que yo tenga que escribir que lo haga.
Se que es muy difícil, porque me lo ha hecho saber un colega tuyo, diciéndome que es un ciclo dentro de otro ciclo, y hay que tener conocimientos demasiados avanzados para dar con la tecla, así que no te sientas mal si no puedes.
Por favor, alguna señal de que has recibido mi mensaje.
Gracias.
Tengo una columna llena de nombres, columna A, necesito extraer los primeros 16 nombres y repartirlos en la primera fila de cada columna que corresponda a ese nombre, pero que no aparezca el nombre sino una cruz, por, porque ya la columna tiene nombre. Luego que reinicie el ciclo nuevamente, extrayendo los siguientes 16 nombres siguientes y los reparta en la siguiente fila, o sea fila 2, en la columna con el nombre correspondiente, y así susesibamente hasta finalizar. En el caso de encontrar 2 nombres iguales, que coloque 2 cruces, por por, en la misma celda dentro de esos 16 nombres.
Ej.
Juan lucas ines maría juan jorge santiago diego
María X X X X X X
Lucas
Ines
María
Diego
Hasta 16 nombres.
Cuando termine de revisar y repartir esta serie de 16 nombres, tome otra serie de 16 nombres y haga lo mismo, pero las cruces que resulten de esta nueva serie, queden debajo de las primeras.
Ej: lucas ines maría juan jorge santiago diego
Fernando X X X X X X
Lucia X X X X
Ernesto
Jorge
Santiago
Ines
María
Hasta 16 nombres y luego tomar otros16 nombres y hacer lo mismo y así sucesivamente hasta terminar la columna ''A''
Las cruces indican los nombres que coinciden con los que están en la columna.
Un colega tuyo me dio esta macro:
Function contarx(celdas As Range, ByVal name As String) As String
Dim cont As String
Dim rnCell As Range
Application.Volatile
For Each rnCell In celdas
If rnCell.Value = name Then
cont = cont & "x"
End If
Next rnCell
contarx = cont
End Function
Y es muy buena la macro, pero el problema fue, que cada vez que quiero que se ejecute, tengo que escribir en cada columna :
=contarx($A$1:$A$16;B1) y me llevaría mucho tiempo , porque son cientos de nombres que tengo en la columna ''A''y por cada 16 nombres tendría que escribirlo.
Necesito una macro que lo haga automáticamente el desglose de todos los nombres, sin que yo tenga que escribir que lo haga.
Se que es muy difícil, porque me lo ha hecho saber un colega tuyo, diciéndome que es un ciclo dentro de otro ciclo, y hay que tener conocimientos demasiados avanzados para dar con la tecla, así que no te sientas mal si no puedes.
Por favor, alguna señal de que has recibido mi mensaje.
Gracias.
1 Respuesta
Respuesta de inforvago
1