¿Cómo desglosar nombres con una macro u otra herramien?


Hola !
Hace muy poco que empecé a trabajar con EXCEL y no tenia idea, en que me estaba metiendo, pues es muy complicado para mi. Por esta razón solicito tu ayuda.
El problema es asi **
Ver más... Texto:
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. Tampoco se como asignarle un nombre a cada columna, para que la identifique como tal. Luego que reinicie el ciclo nuevamente, extrayendo los siguientes 16 nombres 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.
Ej.
Juan lucas ines maría juan jorge santiago diego
María X X X X X X
Lucas
Ines
María
Diego

1 Respuesta

Respuesta
1
Bueno creo que entendí lo que necesitabas, haber si te sirve de esta manera:
Ve al editor de vb alt+f11, dale en insertar modulo, y pega esta función, ahora la puedes usar en tu hoja. Solo tienes que poner en la celda que quieres que aparezcan las "x" por ejemplo así:
=contar(A1:A16;B1)
Donde A1:A16 es el rango donde están los nombres, B1 es la celda donde esta el nombre que buscas, la función contara las ocurrencias del nombre en el rango y lo devolverá en un numero de "x".
Function contar(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
contar = cont
End Function
Hay un error en el código, debes ponerle otro nombre a la función
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
Hola !
Me podes decir como le asigno a las columnas todos los nombres que tengo, que comienza por "Adan" y termina en "Zulma", (alrededor de 60 nombres) o es suficiente con escribirlo debajo de cada letra de las columnas, ¿para qué Excel pueda comparar?
ej:                              C            D               F                 G              H
                               Adan      Adrian      Adriana      Agustin      etc,etc
Desde ya muchas gracias.
Mra, solo tienes que abrir el editor de vb, pegar esl código y usar la función en tu hoja, de por ejemplo así:
Hola Experto!
Estoy ensayando y tratando de deducir por mi falta de conocimiento y no doy con la tecla, por esto te pido paciencia.
A ver si voy bien:
1) Fui a visual basic y donde dice '' Hoja 1(Hoja 1)'' doble clic, dentro de la ventana que aparece, introduje el código que modificaste,( porque en el anterior había un error).
2) La ventana se transforma en ''visual basic . xls -Hoja 1 (código) y donde dice ''Declaraciones'' pasa a decir, ''¿contarx'' . No se si voy bien?
3) Ensaye con tu ejemplo grafico, y cada vez que termino la funcion ''=contarx($A$2etc,etc, en la columna me aparece '' ¿NOMBRE?''.
No se si también tenia que agregar en el editor de vb los códigos ''=contarx($A$2 etc, etc ademas de ponerlo en la hoja, (como tu me lo indicas gráficamente), si fuera así, ¿dónde seria?, ¿Dentro de la ventana ''visual basic .xls''? y luego de '' End Function''?
Como siempre, muchas gracias.
Haber, el primer punto esta mal :), tienes que abrir el editor de VB e ir a insertar->modulo, donde dice modulo1 es donde tienes que darle dobleclick e insertar el código. Si sigues teniendo problemas te envío una copia ;)
Hola Experto
GRACIAS, dame un tiempo, sigo trabajando.
Hola Experto!
Hoy me volví a reintegrar a esta tarea, luego de tener que interrumpirla por fuerzas mayores. Sigo ensayando y deduciendo, si hoy no consigo descubrir el mecanismo, entonces si, te voy a pedir la copia que me ofreciste. Por lo pronto parece ser que descubrí donde se ubica el modulo.
Gracias !
Hola Experto!
Bueno, conseguí introducir la fórmula en el modulo 1 y efectivamente, cada vez que escribo la función en la celda, me aparece tantas cruces ¨x¨como nombres encuentra, ¨Bárbaro!¨, pero cuando aplico ¨Ejecutar macro¨ para que tome los 6 siguientes nombres y repita ella sola la operación, me contesta, ¨¿El argumento no es opcional ¨?
Necesito que la macro lo haga automáticamente.
Gracias !
Hola kimari !
Gracias por darme un tiempo.
¿Podrías decirme si te es posible diseñar una macro que haga lo que pido?:
1) Tome los primeros 16 nombres,(A1:A16).
2) Los reparta en las columnas correspondientes, según el nombre ( sin que yo escriba la función en cada columna).
3) Tome los siguientes 16 nombres,(A17:A33) y los reparta nuevamente, y así sucesivamente hasta terminar todos los nombres de la columna, todo esto automáticamente .
Espero tu respuesta.
Lo siento no te entiendo muy bien, si quieres enviame un ejemplo de un antes y un después de la hoja.
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas