Presentar nombres

06/11/2005 - 18:51 por Hernando | Informe spam
Hola a todos.

Me gustaría mejorar la hoja de liquidación que actualmente tengo.

El Libro se compone de 3 Hojas.

Hoja3: base de datos de lo productos que se venden, importes, unidades y
costes. (de donde toma datos la Hoja2)
Hoja2: donde se introducen LOS CÓDIGOS de los Productos, NOMBRES DE
CLIENTES, y PLAZOS de pago.
Hoja1: la liquidación propiamente dicha. Al introducir el NÚMERO de
producto vendido, aparece el IMPORTE de la venta. (Toma datos de la
Hoja2).

He conseguido que el número y el importe, aparezcan en el RESUMEN de la
Hoja1, pero no los nombres de los clientes.

En la Hoja2 y en la celda ( fila para poner el nombre del cliente ), que
corresponda según que producto, pongo los nombres de los clientes que
han comprado el producto, separados por una coma, puede ser uno o
varios.

Me gustaría saber que fórmula pongo en la celda de la Hoja1, para que me
mostrara, SEPARADOS POR UNA COMA (Igual que están en la Hoja2), los
nombres de los clientes que pongo en la Hoja2.

Gracias y saludos.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
07/11/2005 - 01:41 | Informe spam
hola, Hernando !

Hoja3: base de datos de lo productos que se venden, importes, unidades y costes. (de donde toma datos la Hoja2)
Hoja2: donde se introducen LOS CODIGOS de los Productos, NOMBRES DE CLIENTES, y PLAZOS de pago.
Hoja1: la liquidacion propiamente dicha. Al introducir el NUMERO de producto vendido, aparece el IMPORTE de la venta.
(Toma datos de la Hoja2).
He conseguido que el numero y el importe, aparezcan en el RESUMEN de la Hoja1, pero no los nombres de los clientes [...]



-> si ya has conseguido 'traer' a la hoja1 el numero y el importe desde la hoja2
y en la misma hoja2 estan los nombres de los clientes... [como minimo]...
-> utiliza una formula [si no la misma] 'similar' a la formula con la que 'traes' el numero y el importe :))

si algo no he entendido [o se esta 'quedando en el tintero']... comentas [si hubiera] detalles adicionales ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Hernando
07/11/2005 - 16:39 | Informe spam
Gracias Héctor Miguel, pero los nombres no es igual que el "número de
operaciones" (=CONTAR.SI), o el importe (=SUMAR()). O al menos eso me
parece a mi, porque no doy con ello.

No se como "llamar" a los nombres cuando están en la Hoja2, "en varias
líneas", cada una con su Código, y que, refunda los códigos y me ponga
en la Hoja1, en cada código todos los nombres que están en la Hoja2.

Te amplio:

Hoja2: Introduzco los datos de Clave Producto, Nombre del Cliente, e
importe.

A Pedro Martín 10.000
B Juan Hernández 5.000
C Esteban Prieto 2.500
A Luis Castro 7.500
C Jacinto Pérez 4.600

Hoja1: Donde debe aparecer el resumen, por A, B, C, D, E, ... del
número de Productos vendidos, "Nombres de clientes por Producto", y los
importes totales por productos vendidos. Segun ejemplo anterior, debería
de ser:

Codigo Número Nombre y Apellidos
Importes
A 2 Pedro Martín, Luis Castro
17.500
B 1 Juan Hernández
5.000
C 2 Esteban Prieto, Jacinto
Pérez 7.100

Como te he dicho, el número y los importes de ambos refundidos por cada
Código de producto, lo consigo, pero que me ponga los nombres (me
gustaría separados por coma, no doy con ello.

Espero haberme explicado mejor.

Gracias y saludos nuevamente.
-
"Héctor Miguel" escribió en el mensaje
news:OC$
hola, Hernando !

Hoja3: base de datos de lo productos que se venden, importes,
unidades y costes. (de donde toma datos la Hoja2)
Hoja2: donde se introducen LOS CODIGOS de los Productos, NOMBRES DE
CLIENTES, y PLAZOS de pago.
Hoja1: la liquidacion propiamente dicha. Al introducir el NUMERO de
producto vendido, aparece el IMPORTE de la venta.
(Toma datos de la Hoja2).
He conseguido que el numero y el importe, aparezcan en el RESUMEN de
la Hoja1, pero no los nombres de los clientes [...]



-> si ya has conseguido 'traer' a la hoja1 el numero y el importe
desde la hoja2
y en la misma hoja2 estan los nombres de los clientes... [como
minimo]...
-> utiliza una formula [si no la misma] 'similar' a la formula con
la que 'traes' el numero y el importe :))

si algo no he entendido [o se esta 'quedando en el tintero']...
comentas [si hubiera] detalles adicionales ?
saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
08/11/2005 - 02:50 | Informe spam
hola, Hernando !

... no es igual que el "numero de operaciones" (=CONTAR.SI), o el importe (=SUMAR())...
... como "llamar" a los nombres cuando estan en la Hoja2, "en varias lineas", cada una con su Codigo
... que refunda los codigos y me ponga en la Hoja1, en cada codigo todos los nombres que estan en la Hoja2.
Hoja2: Introduzco los datos de Clave Producto, Nombre del Cliente, e importe.
A Pedro Martin 10.000
B Juan Hernandez 5.000
C Esteban Prieto 2.500
A Luis Castro 7.500
C Jacinto Perez 4.600
Hoja1: Donde debe aparecer el resumen, por A, B, C, D, E, ... Segun ejemplo anterior, deberia de ser:
Codigo Numero Nombre y Apellidos Importes
A 2 Pedro Martin, Luis Castro 17.500
B 1 Juan Hernandez 5.000
C 2 Esteban Prieto, Jacinto Perez 7.100 [...]



1) 'esto es lo que pasa'... cuando se dejan 'detalles en el tintero' [p.e. como es el arreglo y las formulas que usas] :))

2) [definitivamente]... no es lo mismo 'rescatar' unas cosas que 'otras' :))

3) para el caso que expones: rescatar nombres de diferentes [y dispersas lineas] segun si coinciden los productos...
se requiere 'barrer' cada celda/fila para 'comparar' si los productos coinciden y [luego] tomar los nombres de 'esas' filas.

4) si lo deseas con formulas/funciones de hoja de calculo [una columna por nombre 'coincidente' en la fila del producto]...
a) asigna un nombre a los datos donde estan las claves y los nombres [en la hoja2] p.e. 'Clave'
b) suponiendo que en la hoja1 los nombres se van a 'extraer' a partir de la celda 'E2' [f2, g2, h2, etc.]
usa cualquiera de las siguientes formulas [son matriciales, ya sabes, al inroducirlas/editarlas se terminan con ctrl+mayus+enter]
y son en una sola linea [las separo por el numero de caracteres por linea que 'aceptan' los lectores de noticias] :))

=si(columnas($e2:e2)>$b2,"",indirecto("hoja2!b"&indice(k.esimo.menor(k.esimo.mayor(fila(clave)*(clave=$a2),
fila(indirecto("1:"&$b2))),fila(indirecto("1:"&$b2))),columnas($e2:e2))))

=elegir(1+(columnas($e2:e2)<=$b2),"",indirecto("hoja2!b"&indice(k.esimo.menor(k.esimo.mayor(fila(clave)*(clave=$a2),
fila(indirecto("1:"&$b2))),fila(indirecto("1:"&$b2))),columnas($e2:e2))))

=> copias la formula de 'E2' hacia la derecha [al menos] tantas columnas como te indique 'B2'
y tambien hacia abajo tantas filas como productos tengas en el resumen

5) si deseas que lo haga una funcion personalizada... copia las siguientes lineas...
en un modulo de codigo 'normal' ==Function TomarClientes(Clientes As Range, Claves As Range, Clave As Range) As String
Dim Celda As Range, Fila As Long: TomarClientes = "": Fila = 1
For Each Celda In Claves
If Celda = Clave Then
If TomarClientes <> "" Then TomarClientes = TomarClientes & ", "
TomarClientes = TomarClientes & Clientes.Cells(Fila)
End If: Fila = Fila + 1
Next
End Function

y 'llama' a esta funcion como a cualquiera otra de las 'integradas' de excel... [p.e. en la celda 'C2' de la hoja1]...
=TomarClientes(Hoja2!$B$2:$B$7,Hoja2!$A$2:$A$7,A2)

finalmente, toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :))

si cualquier duda [o informcion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Hernando
08/11/2005 - 11:01 | Informe spam
. 5) si deseas que lo haga una funcion personalizada... copia
las siguientes lineas...
en un modulo de codigo 'normal' ==> Function TomarClientes(Clientes As Range, Claves As Range, Clave As
Range) As String
Dim Celda As Range, Fila As Long: TomarClientes = "": Fila = 1
For Each Celda In Claves
If Celda = Clave Then
If TomarClientes <> "" Then TomarClientes = TomarClientes & ", "
TomarClientes = TomarClientes & Clientes.Cells(Fila)
End If: Fila = Fila + 1
Next
End Function

y 'llama' a esta funcion como a cualquiera otra de las 'integradas' de
excel... [p.e. en la celda 'C2' de la hoja1]...
=TomarClientes(Hoja2!$B$2:$B$7,Hoja2!$A$2:$A$7,A2)


si cualquier duda [o informcion adicional]... comentas ?




Gracias Héctor Miguel por todas las molestias que te tomas. Como va a
ser mi primera experiencia en incorporar las líneas que me mandaste en
un "módulo de código 'normal' ", me surgen un par de dudas que
necesitaría aclarar para llevar a buen término este trabajo.

a) donde abro el editor de VBA para copiar las líneas, en la Hoja1 o en
la Hoja2, o da igual en cualquiera de ellas? qué es "módulo de código
'normal' ?
b) abro con Alt+F11 y copio tal cual, las lineas que me mandas en la
ventana de la derecha. ¿Cómo cierro el editor y termino para que ya esta
hoja funcione siempre con la llamada "=TomarClientes" ?
c) como te dije tengo en la hoja2 en b31:b67 (b49 está en blanco), los
nombres de los clientes, y en a31:a67 (a49 en blanco) los códigos de los
productos, sería entonces tu fórmula
=TomarClientes(Hoja2!$B$31:$B$67,Hoja2!$A$31:$A$67,A2). Qué indica el
"A2" último de ésta formula ?
Si con esto ya me vale, espero tus aclaraciones para hacer la
incorporación de tus líneas, si consideras que para hacerlo bien
requiero por mi inexperiencia ampliarme los pasos a seguir en la
incorporación, te rogaría me lo expusieras también.

Saludos.
"Héctor Miguel" escribió en el mensaje
news:
hola, Hernando !

... no es igual que el "numero de operaciones" (=CONTAR.SI), o el
importe (=SUMAR())...
... como "llamar" a los nombres cuando estan en la Hoja2, "en varias
lineas", cada una con su Codigo
... que refunda los codigos y me ponga en la Hoja1, en cada codigo
todos los nombres que estan en la Hoja2.
Hoja2: Introduzco los datos de Clave Producto, Nombre del Cliente, e
importe.
A Pedro Martin 10.000
B Juan Hernandez 5.000
C Esteban Prieto 2.500
A Luis Castro 7.500
C Jacinto Perez 4.600
Hoja1: Donde debe aparecer el resumen, por A, B, C, D, E, ...
Segun ejemplo anterior, deberia de ser:
Codigo Numero Nombre y Apellidos Importes
A 2 Pedro Martin, Luis Castro
17.500
B 1 Juan Hernandez
5.000
C 2 Esteban Prieto, Jacinto Perez
7.100 [...]



1) 'esto es lo que pasa'... cuando se dejan 'detalles en el tintero'
[p.e. como es el arreglo y las formulas que usas] :))

2) [definitivamente]... no es lo mismo 'rescatar' unas cosas que
'otras' :))

3) para el caso que expones: rescatar nombres de diferentes [y
dispersas lineas] segun si coinciden los productos...
se requiere 'barrer' cada celda/fila para 'comparar' si los
productos coinciden y [luego] tomar los nombres de 'esas' filas.

4) si lo deseas con formulas/funciones de hoja de calculo [una columna
por nombre 'coincidente' en la fila del producto]...
a) asigna un nombre a los datos donde estan las claves y los
nombres [en la hoja2] p.e. 'Clave'
b) suponiendo que en la hoja1 los nombres se van a 'extraer' a
partir de la celda 'E2' [f2, g2, h2, etc.]
usa cualquiera de las siguientes formulas [son matriciales, ya
sabes, al inroducirlas/editarlas se terminan con ctrl+mayus+enter]
y son en una sola linea [las separo por el numero de caracteres
por linea que 'aceptan' los lectores de noticias] :))

=si(columnas($e2:e2)>$b2,"",indirecto("hoja2!b"&indice(k.esimo.menor(k.esimo.mayor(fila(clave)*(clave=$a2),
fila(indirecto("1:"&$b2))),fila(indirecto("1:"&$b2))),columnas($e2:e2))))

=elegir(1+(columnas($e2:e2)<=$b2),"",indirecto("hoja2!b"&indice(k.esimo.menor(k.esimo.mayor(fila(clave)*(clave=$a2),
fila(indirecto("1:"&$b2))),fila(indirecto("1:"&$b2))),columnas($e2:e2))))

=> copias la formula de 'E2' hacia la derecha [al menos] tantas
columnas como te indique 'B2'
y tambien hacia abajo tantas filas como productos tengas en el
resumen

5) si deseas que lo haga una funcion personalizada... copia las
siguientes lineas...
en un modulo de codigo 'normal' ==> Function TomarClientes(Clientes As Range, Claves As Range, Clave As
Range) As String
Dim Celda As Range, Fila As Long: TomarClientes = "": Fila = 1
For Each Celda In Claves
If Celda = Clave Then
If TomarClientes <> "" Then TomarClientes = TomarClientes & ", "
TomarClientes = TomarClientes & Clientes.Cells(Fila)
End If: Fila = Fila + 1
Next
End Function

y 'llama' a esta funcion como a cualquiera otra de las 'integradas' de
excel... [p.e. en la celda 'C2' de la hoja1]...
=TomarClientes(Hoja2!$B$2:$B$7,Hoja2!$A$2:$A$7,A2)

finalmente, toma en cuenta que mi sistema usa como separador de
argumentos a la coma ',' NO al punto y coma ';' :))

si cualquier duda [o informcion adicional]... comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
#5 Héctor Miguel
08/11/2005 - 18:47 | Informe spam
hola, Hernando !

... va a ser mi primera experiencia en incorporar las lineas... en un "modulo de codigo 'normal'"
a) ... copiar las lineas, en la Hoja1 o en la Hoja2, o da igual en cualquiera de ellas?
... que es "modulo de codigo 'normal' ?
b) ... Como cierro el editor y termino para que... funcione... la llamada "=TomarClientes" ?
c) ... la hoja2 en b31:b67 (b49 esta en blanco), los nombres dae los clientes
... en a31:a67 (a49 en blanco) los codigos de los productos, seria entonces tu formula
... =TomarClientes(Hoja2!$B$31:$B$67,Hoja2!$A$31:$A$67,A2).
Que indica el "A2" ultimo de esta formula ? [...]



a) los modulos de codigo de 'hoja1'... 'hoja_n' son modulos de codigo 'de clase' [aplican a cada objeto 'worksheet']
los modulos de codigo 'normales' los insertas [en vba] desde [menu] insertar / modulo... [Modulo1, Modulo2, ...]
-> las lineas de codigo de la funcion personalizada van [preferentemente] en 'este tipo' de modulos [normales] ;)

b) para cerrar el editor de vba [una vez copiadas las lineas de la funcion en el modulo 'normal']...
{alt}+Q o... {alt}+{F4} o... [menu] archivo / cerrar y volver a...

c) los 'argumentos' que requiere/usa la funcion [para comparar y tomar desde rangos 'especificos'] son...
=TomarClientes [esta es la llamada a la funcion] :))
Hoja2!$B$31:$B$67 [este es el argumento 'Clientes' y se refiere al rango/hoja donde estan los nombres]
Hoja2!$A$31:$A$67 [este es el argumento 'Claves' y se refiere al rango/hoja donde estan las claves para 'comparar' con]...
A2 -> esta es la celda en la hoja donde aplicas la funcion que contiene 'la clave' que se va a comparar 'coincidencias' ;)

si cualquier duda... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida