Concatenar celdas y texto fijo mediante formula matricial

18/09/2003 - 20:49 por bernalko | Informe spam
Hola grupo,

paso a exponer una situación que se me ha dado esta mañana:

Debía concatenar el valor de la celda A1 con el de A2, A3, A4, A20
insertando entre medias el carácter "x".
De suerte que si en A1 tengo un "1", en A2 un "2" etc., el resultado
quedaria:
1x2x3...x20.
Pero hay que prever que no todas las celdas tienen valores. Y si una
celda esta en blanco, no se insertara tampoco la "x".

He salido del paso -no muy elegantemente- de la manera siguiente:

En A21 "= A1 & SI(A2="","","x"&A2) & SI(A3="","","x"&A3) ... &
SI(A20="","","x"&A20)

Supongo que habrá soluciones más elegantes, sin necesidad de recurrir
a VBA.
¿Una fórmula matricial, quizás?

Se admiten sugerencias.

Gracias foro, un saludo,

-KOldo-

Preguntas similare

Leer las respuestas

#1 simon
18/09/2003 - 21:31 | Informe spam
Otra forma, no mucho más elegante, sería utilizar una columna auxiliar con
contenido x, cuando la celda de la columna A, de la misma fila, no esté
vacia y después concatenar todas las celdas de esta columna auxiliar.

escribió en el mensaje
news:
Hola grupo,

paso a exponer una situación que se me ha dado esta mañana:

Debía concatenar el valor de la celda A1 con el de A2, A3, A4, A20
insertando entre medias el carácter "x".
De suerte que si en A1 tengo un "1", en A2 un "2" etc., el resultado
quedaria:
1x2x3...x20.
Pero hay que prever que no todas las celdas tienen valores. Y si una
celda esta en blanco, no se insertara tampoco la "x".

He salido del paso -no muy elegantemente- de la manera siguiente:

En A21 "= A1 & SI(A2="","","x"&A2) & SI(A3="","","x"&A3) ... &
SI(A20="","","x"&A20)

Supongo que habrá soluciones más elegantes, sin necesidad de recurrir
a VBA.
¿Una fórmula matricial, quizás?

Se admiten sugerencias.

Gracias foro, un saludo,

-KOldo-
Respuesta Responder a este mensaje
#2 Héctor Miguel
19/09/2003 - 04:53 | Informe spam
Hola ;)

... concatenar ... A1 ... A20 ... insertando entre ... "x" [...]
... soluciones ... sin necesidad de recurrir a VBA. ¿Una formula matricial, quizas?



==> ['tal parece que'] concatenar, en cualquiera de sus 'formas' [funcion o signo de union '&']
SOLO 'trabaja' con elementos 'individuales' [NO 'admite' matrices]
en el caso de alguna matriz en sus argumentos, 'tomara' el primer elemento [solamente]
o sea... [hasta donde he 'podido ver'] NO 'te escapas' de 'tener que' recurrir a VBA :((

si te sirve, la siguiente funcion [personalizada] 'trabaja bien' ;)
la puedes 'llamar' en hojas de calculo si en algun modulo de codigo agregas el codigo siguiente:
[ya sea en la hoja o en el libro de macros 'Personal.xls'] ==Function ConcatenarCeldas( _
ByRef Rango As Range, _
Optional ByVal Separador As String) As String
Dim Celda As Range, Final As String
For Each Celda In Rango
If Not IsEmpty(Celda) Then
If Final <> "" Then Final = Final & Separador
Final = Final & Celda
End If
Next
ConcatenarCeldas = Final
End Function

la 'forma de llamarla' seria [p.e.] en la celda "B1" =ConcatenarCeldas(A1:A20,"x")
el segundo argumento es 'opcional' [el/los caracter/es de 'separacion' en la concatenacion]
_______
Saludos,
Héctor.
MS-MVP
Respuesta Responder a este mensaje
#3 bernalko
19/09/2003 - 10:45 | Informe spam
Gracia Héctor por tu aclaracion.
La funcion que adjuntas, la he probado y va bien.
Solo tengo una duda:

Cuando selecciono la funcion dentro del apdo. "Funciones def. por
usuario" aparece como: "PERSONAL.xls!ConcatenarCeldas"
y cuando la selecciono, asi me la presenta en la formula.

He probado introduciendo la formula sin la referencia al libro
PERSONAL;
pero me da un mensaje de error #¿NOMBRE?.

¿Debe ser esto asi?
¿Como puedo utilizar la función sin hacer referencia al libro
PERSONAL?

Saludos, :))


la 'forma de llamarla' seria [p.e.] en la celda "B1" =ConcatenarCeldas(A1:A20,"x")
el segundo argumento es 'opcional' [el/los caracter/es de 'separacion' en la concatenacion]
Respuesta Responder a este mensaje
#4 Héctor Miguel
19/09/2003 - 17:23 | Informe spam
Hola, :)

... la funcion dentro del apdo. "Funciones def. por usuario" aparece como: "PERSONAL.xls!ConcatenarCeldas"
... cuando la selecciono, asi me la presenta ... sin la referencia al libro PERSONAL ... de error #¿NOMBRE?.
¿Como puedo utilizar la función sin hacer referencia al libro PERSONAL?



==> se debe a que estas introduciendo la funcion en 'otro' libro =>NO en 'Personal.xls'< para que las funciones definidas por el usuario [en el libro 'Personal.xls'] esten 'disponibles' para cualquier libro...
1) LA VENTANA del libro 'Personal.xls' DEBE ESTAR OCULTA [Ventana -> Ocultar]
2) el libro ['Personal.xls'] debe ser 'guardado' en el directorio 'de inicio' [XLStart ?] => con la ventana oculta < de 'esta forma', se 'carga' siempre que se inicie excel y 'sus' funciones estan 'disponibles' en la sesion.
[quizas sea necesario re-iniciar la sesion]
_______
Saludos,
Héctor.
MS-MVP
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida