Excel: concatenación y formato
thierry
-
Visiteur -
Visiteur -
Hola,
tengo un problema de concatenación con Excel.
Un ejemplo: vale más que un largo discurso:
en mi primera celda, tengo "Hola" (en negrita, es importante)
en mi segunda celda, tengo "¿cómo va?" (sin negrita)
me gustaría concatenar los dos textos en una tercera celda manteniendo estos formatos para obtener:
"Hola ¿cómo va?"
Así, así, no puedo. Ni siquiera con una macro, no sé cómo hacerlo.
Gracias por sus consejos
Cordialmente,
Thierry
tengo un problema de concatenación con Excel.
Un ejemplo: vale más que un largo discurso:
en mi primera celda, tengo "Hola" (en negrita, es importante)
en mi segunda celda, tengo "¿cómo va?" (sin negrita)
me gustaría concatenar los dos textos en una tercera celda manteniendo estos formatos para obtener:
"Hola ¿cómo va?"
Así, así, no puedo. Ni siquiera con una macro, no sé cómo hacerlo.
Gracias por sus consejos
Cordialmente,
Thierry
24 respuestas
- 1
- 2
Siguiente
Hola
Poner en negrita una parte de un texto en Microsoft Excel:
¿Cómo hacer para poner en una celda solo una parte del texto en negrita?
Sin VBA, es muy fácil, seleccionas y haces clic en el icono "negrita".
Mediante VBA, puedes utilizar la posición de la subcadena para hacerlo:
*** :
Sub PonerEnNegrita()
Range("A1") = "Automóvil"
'Poner en negrita "óvil"
Range("A1").Characters(7, 4).Font.Bold = True
End Sub
*** .
Denis Michon, (N°816)
Fuente => http://www.excelabo.net/excel/formatstexte.php
Creo que puedes llamar a una función, "PonerEnNegrita()", el resultado en curso de "cálculo"; y esta llamada de la función, se encuentra en la fórmula, en el lugar adecuado. La función, la haces tú mismo, con ayuda, basándote en el interesante ejemplo anterior. Gracias.
Es muy difícil encontrar información sobre la función "estilo"; para colocar en una fórmula!
Para Microsoft Excel (es difícil), como con OpenOffice.org Calc (más fácil de encontrar).
=> Se crea un estilo y se aplica directamente en (a partir de) la fórmula? (tengo dudas)
Gracias.
Hasta luego.
Poner en negrita una parte de un texto en Microsoft Excel:
¿Cómo hacer para poner en una celda solo una parte del texto en negrita?
Sin VBA, es muy fácil, seleccionas y haces clic en el icono "negrita".
Mediante VBA, puedes utilizar la posición de la subcadena para hacerlo:
*** :
Sub PonerEnNegrita()
Range("A1") = "Automóvil"
'Poner en negrita "óvil"
Range("A1").Characters(7, 4).Font.Bold = True
End Sub
*** .
Denis Michon, (N°816)
Fuente => http://www.excelabo.net/excel/formatstexte.php
Creo que puedes llamar a una función, "PonerEnNegrita()", el resultado en curso de "cálculo"; y esta llamada de la función, se encuentra en la fórmula, en el lugar adecuado. La función, la haces tú mismo, con ayuda, basándote en el interesante ejemplo anterior. Gracias.
Es muy difícil encontrar información sobre la función "estilo"; para colocar en una fórmula!
Para Microsoft Excel (es difícil), como con OpenOffice.org Calc (más fácil de encontrar).
=> Se crea un estilo y se aplica directamente en (a partir de) la fórmula? (tengo dudas)
Gracias.
Hasta luego.
@pijaku
De hecho, tenía esta pregunta precisamente "ahora" (excepto por el formato) y tengo que decir que la respuesta de banbar resuelve a la perfección mi problema de concatenar varias celdas, ya que no necesito conservar los caracteres en negrita (no tengo). Así que esta resurrección del tema, aproximadamente 28 días antes de mi necesidad "ahora", no está lejos de ser una bendición ;-)
De hecho, tenía esta pregunta precisamente "ahora" (excepto por el formato) y tengo que decir que la respuesta de banbar resuelve a la perfección mi problema de concatenar varias celdas, ya que no necesito conservar los caracteres en negrita (no tengo). Así que esta resurrección del tema, aproximadamente 28 días antes de mi necesidad "ahora", no está lejos de ser una bendición ;-)
Para aquellos que puedan utilizar este foro más adelante. Aquí está mi solución, que considero más sencilla que el VBA para lo que quería hacer.
Lo que quería hacer: concatenación manteniendo el formato de un % y del texto.
Solución (ejemplo): =TEXTO(B2/B5;"0,00%")&" Patatas"
B2 y B5 contenían lo que comúnmente llamamos números.
Lo que quería hacer: concatenación manteniendo el formato de un % y del texto.
Solución (ejemplo): =TEXTO(B2/B5;"0,00%")&" Patatas"
B2 y B5 contenían lo que comúnmente llamamos números.
Hola
Si puedes "eriiic", por favor, utiliza "Microsoft Excel Viewer" para ver cómo se ve la cosa; gracias.
=> Será muy instructivo; sin macros, VBA, o "otras cosas" activadas...
Mira también con OpenOffice.org Calc; gracias; no todo el mundo tiene Office...
Intenta, si quieres y puedes, ehh ;-), hacer ejemplos visibles correctamente para todos.
(gracias)
Por mi parte; no digo que hagas; como el ejemplo propuesto en el Post #8:
B1: =A1&A2&A3&A4 (para concatenar)
Pero más bien; si es posible:
B1: =PonerEnNegrita(A1)&PonerEnCursiva(A2)&NeutroDefecto(A3)&NeutroDefecto(A4) (para concatenar)
=> Llamamos a la función; aquí para el formato del texto, en la fórmula! ;-)
(¡Función que uno hace uno mismo!)
eh, en Excel, ¿no es posible usar la función oculta "estilo", como en OpenOffice.org Calc?
Digo oculta, porque no he encontrado información... (ver por favor los enlaces de publicaciones anteriores).
gracias "eriiic" y gracias a todos.
hasta luego
Si puedes "eriiic", por favor, utiliza "Microsoft Excel Viewer" para ver cómo se ve la cosa; gracias.
=> Será muy instructivo; sin macros, VBA, o "otras cosas" activadas...
Mira también con OpenOffice.org Calc; gracias; no todo el mundo tiene Office...
Intenta, si quieres y puedes, ehh ;-), hacer ejemplos visibles correctamente para todos.
(gracias)
Por mi parte; no digo que hagas; como el ejemplo propuesto en el Post #8:
B1: =A1&A2&A3&A4 (para concatenar)
Pero más bien; si es posible:
B1: =PonerEnNegrita(A1)&PonerEnCursiva(A2)&NeutroDefecto(A3)&NeutroDefecto(A4) (para concatenar)
=> Llamamos a la función; aquí para el formato del texto, en la fórmula! ;-)
(¡Función que uno hace uno mismo!)
eh, en Excel, ¿no es posible usar la función oculta "estilo", como en OpenOffice.org Calc?
Digo oculta, porque no he encontrado información... (ver por favor los enlaces de publicaciones anteriores).
gracias "eriiic" y gracias a todos.
hasta luego
Hola,
Bueno... este post es un poco antiguo pero estoy frente al mismo problema.
Mi objetivo es también concatenar celdas que, según una variable de fecha, puedan estar en negrita o no.
La solución que estoy contemplando es crear en VBA una función "conservformat" que me permita mantener el formato de la celda fuente, tal como en el siguiente ejemplo:
=CONCATENAR(A1;conservformat(A2);A3)
Así el formato de la celda A2 se conservará en mi celda de destino.
Aquí está el inicio de mi código:
Function ConservFormat(rngCells As Range) As Double
Application.Volatile
Dim cell As Range
ConservFormat = ???
On Error Resume Next
For Each cell In rngCells
If cell.Font.Bold Then ConservFormat = ???
Next cell
End Function
Como pueden ver, la idea es detectar qué celdas están en negrita para establecer una condición de formato en la función. Pero me falta precisamente la condición de formato...
bueno, no sé si he sido claro, pero en caso de que comprendan mi problema, ¿tienen alguna idea de cómo hacerlo?
Gracias a ustedes
Bueno... este post es un poco antiguo pero estoy frente al mismo problema.
Mi objetivo es también concatenar celdas que, según una variable de fecha, puedan estar en negrita o no.
La solución que estoy contemplando es crear en VBA una función "conservformat" que me permita mantener el formato de la celda fuente, tal como en el siguiente ejemplo:
=CONCATENAR(A1;conservformat(A2);A3)
Así el formato de la celda A2 se conservará en mi celda de destino.
Aquí está el inicio de mi código:
Function ConservFormat(rngCells As Range) As Double
Application.Volatile
Dim cell As Range
ConservFormat = ???
On Error Resume Next
For Each cell In rngCells
If cell.Font.Bold Then ConservFormat = ???
Next cell
End Function
Como pueden ver, la idea es detectar qué celdas están en negrita para establecer una condición de formato en la función. Pero me falta precisamente la condición de formato...
bueno, no sé si he sido claro, pero en caso de que comprendan mi problema, ¿tienen alguna idea de cómo hacerlo?
Gracias a ustedes
Actualmente tengo el mismo tipo de problema...
De hecho, yo quiero asignar un nuevo formato al texto escrito en mi celda fuente, en mi celda final...
Alguien me acaba de dar un buen empujón con la fórmula de texto de excel....
Tenía un formato de número que quería tener en formato monetario... así que mi concatenar ahora se ve así: =CONCATENAR(QW589;RJ589;TW589&TEXTO(UB589;"# ## ##0_ $");UO589;QW590;QW591)
Dicho esto, tengo otro problema... quiero que RJ589 y TEXTO(UB589;"# ## ##0_ $" se muestren en negrita... ¿cómo lo hago?
Quiero proceder sin macro si es posible, este archivo funcionará en varias computadoras....
De hecho, yo quiero asignar un nuevo formato al texto escrito en mi celda fuente, en mi celda final...
Alguien me acaba de dar un buen empujón con la fórmula de texto de excel....
Tenía un formato de número que quería tener en formato monetario... así que mi concatenar ahora se ve así: =CONCATENAR(QW589;RJ589;TW589&TEXTO(UB589;"# ## ##0_ $");UO589;QW590;QW591)
Dicho esto, tengo otro problema... quiero que RJ589 y TEXTO(UB589;"# ## ##0_ $" se muestren en negrita... ¿cómo lo hago?
Quiero proceder sin macro si es posible, este archivo funcionará en varias computadoras....
Hola,
¿Has intentado ver entre las funciones que ofrece Excel?
Inserción>Función, y eliges las opciones que te convengan.
¿Has intentado ver entre las funciones que ofrece Excel?
Inserción>Función, y eliges las opciones que te convengan.
No Thierry, lamentablemente no tengo una solución, pero si alguien te da la buena idea, tal vez yo también podría resolver mi problema, que planteé unos minutos antes que el tuyo.
Ver para más información el hilo: "reagrupación de datos"
Seguimos nuestras respuestas respectivas, y nos las pasamos si funciona. ?
CRDLMNT
--
Ciencia sin conciencia es solo ruina del alma.
Ver para más información el hilo: "reagrupación de datos"
Seguimos nuestras respuestas respectivas, y nos las pasamos si funciona. ?
CRDLMNT
--
Ciencia sin conciencia es solo ruina del alma.
Sí, he revisado las funciones propuestas por Excel, pero no encontré nada que pudiera corresponder a mis necesidades (observación: es Excel en inglés, así que tal vez me perdí algo).
Si alguien sabe cómo obtener el mismo resultado con una macro, no tengo objeciones.
Gracias de antemano.
Si alguien sabe cómo obtener el mismo resultado con una macro, no tengo objeciones.
Gracias de antemano.
Buenas noches,
Aquí hay una pista:
Sea A1 = "Hola
A2 = "¿cómo va?"
A3 contendrá la siguiente fórmula:
=concatenar(a1;" ";a2)
Bueno, no tengo Excel a mano y por eso no sé si el formato en negrita de hola se conserva.
A probar.
Hasta luego
zarakoff
Aquí hay una pista:
Sea A1 = "Hola
A2 = "¿cómo va?"
A3 contendrá la siguiente fórmula:
=concatenar(a1;" ";a2)
Bueno, no tengo Excel a mano y por eso no sé si el formato en negrita de hola se conserva.
A probar.
Hasta luego
zarakoff
Justamente, ahí está mi problema, la fórmula no conserva el formato de las celdas, así que obtenemos simplemente Hola, ¿cómo estás?.
Y al poner la celda en negrita, obtenemos Hola, ¿cómo estás?.
Así que de esta manera no hay forma de tener Hola ¿cómo estás?
Y al poner la celda en negrita, obtenemos Hola, ¿cómo estás?.
Así que de esta manera no hay forma de tener Hola ¿cómo estás?
Hola
Poner en negrita una parte de un texto en Microsoft Excel:
https://sebsauvage.net/temp/wink/excel_vbarecord.html
Fuente => http://www.commentcamarche.net/forum
/affich-2073115-excel-comment-mettre-en-gras-avec-une-macro
Funciones "ocultas" de XL4; Consejo reciente: leer.celda(); sobre (C) 2006 Excel Downloads:
https://www.excel-downloads.com/threads/astuce-recente-lire-cellule.32955/
Saber si las celdas seleccionadas (Excel) están en negrita e itálicas:
http://www.codyx.org/snippet_savoir-si-cellules-selectionnees-excel-sont-gras-italiques_336.aspx
gracias.
hasta luego
Poner en negrita una parte de un texto en Microsoft Excel:
https://sebsauvage.net/temp/wink/excel_vbarecord.html
Fuente => http://www.commentcamarche.net/forum
/affich-2073115-excel-comment-mettre-en-gras-avec-une-macro
Funciones "ocultas" de XL4; Consejo reciente: leer.celda(); sobre (C) 2006 Excel Downloads:
https://www.excel-downloads.com/threads/astuce-recente-lire-cellule.32955/
Saber si las celdas seleccionadas (Excel) están en negrita e itálicas:
http://www.codyx.org/snippet_savoir-si-cellules-selectionnees-excel-sont-gras-italiques_336.aspx
Public Function IsBoldItalic(ByVal MyRange As Range) As String Dim rCell As Range For Each rCell In MyRange IsBoldItalic = IsBoldItalic & rCell.Address & " :" & vbCrLf IsBoldItalic = IsBoldItalic & vbTab & "Negrita : " & CBool(rCell.Font.Bold) & vbCrLf IsBoldItalic = IsBoldItalic & vbTab & "Itálica : " & CBool(rCell.Font.Italic) & vbCrLf Next rCell End Function Sub EXEMPLO() Debug.Print IsBoldItalic(Range("A1:A4")) ' *** RESULTADO : *** '$A$1 : ' Negrita : Falso ' Itálica : Falso '$A$2 : ' Negrita : Verdadero ' Itálica : Falso '$A$3 : ' Negrita : Falso ' Itálica : Verdadero '$A$4 : ' Negrita : Verdadero ' Itálica : Verdadero End Sub gracias.
hasta luego
Gracias Anónimo por todas estas investigaciones, pero no he encontrado nada que se corresponda con mi problema.
De hecho, es más complicado que simplemente poner en negrita una parte de la celda.
Otro ejemplo:
en A1: Hola_
en A2: ¿cómo va_?
en A3: Sí_
en A4: ¿y tú?
en B1: =A1&A2&A3&A4 (para concatenar)
y obtengo:
Hola_¿cómo va_?Sí_¿y tú?
en lugar de
Hola_¿cómo va_Sí_¿y tú?
En resumen, me gustaría conservar el formato durante la concatenación.
Gracias de antemano.
De hecho, es más complicado que simplemente poner en negrita una parte de la celda.
Otro ejemplo:
en A1: Hola_
en A2: ¿cómo va_?
en A3: Sí_
en A4: ¿y tú?
en B1: =A1&A2&A3&A4 (para concatenar)
y obtengo:
Hola_¿cómo va_?Sí_¿y tú?
en lugar de
Hola_¿cómo va_Sí_¿y tú?
En resumen, me gustaría conservar el formato durante la concatenación.
Gracias de antemano.
Hola Thierry,
Tu pregunta no es fácil, pero es interesante.
Primero quise crear una función que reemplazara CONCATENAR, pero fue imposible de resolver.
Así que creé un sub que analiza la fórmula de las celdas que le pasas seleccionando rangos y pega el resultado en la celda inmediatamente a la derecha.
No hago casi ningún control, así que estas fórmulas deben limitarse a = A1 & A2 & ... y hacer referencia a celdas que solo contengan cadenas. Los atributos recuperados son: negrita, cursiva, subrayado simple, color. No he mirado, pero debe ser posible recuperar la fuente y el tamaño.
Por supuesto, es un primer borrador, pero es funcional. Tendrá que completarse con un formulario de usuario que permita elegir el desplazamiento de destino, los atributos a recuperar, etc. También previ que se pueda insertar un retorno de carro donde se desee (para Vaucluse ;-) ), pero no se ha tratado por ahora.
Un ejemplo más concreto: http://www.cijoint.fr/cij45591193727506.xls
Seleccionas, por ejemplo, F3:F4 y F6:F8 y lanzas la macro RecupFormatCel.
Vas a poder crear bonitos degradados ;-)
Eric
Tu pregunta no es fácil, pero es interesante.
Primero quise crear una función que reemplazara CONCATENAR, pero fue imposible de resolver.
Así que creé un sub que analiza la fórmula de las celdas que le pasas seleccionando rangos y pega el resultado en la celda inmediatamente a la derecha.
No hago casi ningún control, así que estas fórmulas deben limitarse a = A1 & A2 & ... y hacer referencia a celdas que solo contengan cadenas. Los atributos recuperados son: negrita, cursiva, subrayado simple, color. No he mirado, pero debe ser posible recuperar la fuente y el tamaño.
Por supuesto, es un primer borrador, pero es funcional. Tendrá que completarse con un formulario de usuario que permita elegir el desplazamiento de destino, los atributos a recuperar, etc. También previ que se pueda insertar un retorno de carro donde se desee (para Vaucluse ;-) ), pero no se ha tratado por ahora.
Un ejemplo más concreto: http://www.cijoint.fr/cij45591193727506.xls
Seleccionas, por ejemplo, F3:F4 y F6:F8 y lanzas la macro RecupFormatCel.
Vas a poder crear bonitos degradados ;-)
Eric
Re,
nueva versión que permite insertar una cadena "vbLf" forzando el salto de línea dentro del texto de una celda
http://www.cijoint.fr/cij2036478627532.xls
Atención siempre hacer referencia a una celda, no trato (¿aún?) las fórmulas del tipo =A1 & "blablabla" & A3 & ...
eric
nueva versión que permite insertar una cadena "vbLf" forzando el salto de línea dentro del texto de una celda
http://www.cijoint.fr/cij2036478627532.xls
Atención siempre hacer referencia a una celda, no trato (¿aún?) las fórmulas del tipo =A1 & "blablabla" & A3 & ...
eric
Hola Anónimo,
Para Open Office nunca me he ocupado de las macros. Sin duda, se pueden adaptar fácilmente.
En cuanto a hacer una función, era mi idea inicial, pero no es tan fácil, créeme. Una vez que se devuelve el valor, ya no hay forma de continuar el tratamiento para hacer el formateo y acceder a la dirección sin tener una referencia circular, y si se aborda de otra manera, se pierden los atributos ya establecidos... (hay que investigar más, pero por ahora estoy en eso)
En última instancia, la opción de hacer un procedimiento tiene una ventaja: poder tratar una tabla ya hecha siempre que liberemos las celdas que reciben el resultado; sin embargo, no hay actualización dinámica :-s
Pero bueno, hay mejoras posibles, esto era al principio para ver la viabilidad sin hacer demasiados controles ni un análisis muy profundo de la fórmula.
A falta del visor, aquí tienes una captura de pantalla.
Las fórmulas de concatenación están en la columna H, el resultado de la macro en la columna I
He optado por una cadena específica para los saltos de línea, de ahí los "vbLf"
http://www.cijoint.fr/cij73148756327527.jpg
El código en VBA para adaptación en Open Office:
eric
Para Open Office nunca me he ocupado de las macros. Sin duda, se pueden adaptar fácilmente.
En cuanto a hacer una función, era mi idea inicial, pero no es tan fácil, créeme. Una vez que se devuelve el valor, ya no hay forma de continuar el tratamiento para hacer el formateo y acceder a la dirección sin tener una referencia circular, y si se aborda de otra manera, se pierden los atributos ya establecidos... (hay que investigar más, pero por ahora estoy en eso)
En última instancia, la opción de hacer un procedimiento tiene una ventaja: poder tratar una tabla ya hecha siempre que liberemos las celdas que reciben el resultado; sin embargo, no hay actualización dinámica :-s
Pero bueno, hay mejoras posibles, esto era al principio para ver la viabilidad sin hacer demasiados controles ni un análisis muy profundo de la fórmula.
A falta del visor, aquí tienes una captura de pantalla.
Las fórmulas de concatenación están en la columna H, el resultado de la macro en la columna I
He optado por una cadena específica para los saltos de línea, de ahí los "vbLf"
http://www.cijoint.fr/cij73148756327527.jpg
El código en VBA para adaptación en Open Office:
Const LF As String = "vblf" Sub RecupFormatCel() Dim c1 As Range, c2 As Range, dest As Range Dim i As Integer, long1 As Long, ptr1 As Long, ptr2 As Long Dim formatCel As Variant Dim ListeRef As Variant For Each c1 In Selection f = c1.Formula If Left(f, 1) <> "=" Then 'formule ? Exit Sub Else f = Mid(c1.Formula, 2) 'oui: eliminer = End If Set dest = c1.Offset(0, 1) 'cellule de destination dest.Value = c1.Value ListeRef = Split(f, "&") ' découper la formule ' ' remplacement des "vbLF" par vbLf While InStr(1, LCase(dest.Value), LF) pos = InStr(1, LCase(dest.Value), LF) dest = Left(dest.Value, pos - 1) & vbLf & Mid(dest.Value, pos + Len(LF)) Wend ' récupération des formats ptr1 = 1 For i = 0 To UBound(ListeRef) Set c2 = Range(ListeRef(i)) ' adresse de la chaine long1 = Len(c2.Value) ' longueur de la chaine 'ptr2 = ptr2 + long1 If LCase(c2.Value) = LF Then ' traitement vbLF long1 = 1 Else With c2.Font formatCel = .FontStyle dest.Characters(Start:=ptr1, Length:=long1).Font.FontStyle = formatCel formatCel = .ColorIndex dest.Characters(Start:=ptr1, Length:=long1).Font.ColorIndex = formatCel formatCel = .Underline dest.Characters(Start:=ptr1, Length:=long1).Font.Underline = formatCel End With End If ptr1 = ptr1 + long1 Next i Next c1 End Sub Sub test() Range("H3:H5,H7:H8").Select RecupFormatCel End Sub Sub raz() Range("I3:I8").ClearContents End Suberic
Para completar las dificultades encontradas en la función, los atributos de texto aplicados sobre el texto de una celda (y no sobre la celda misma) se pierden tan pronto como se almacenan en una variable VBA. Solo se pueden manipular dentro de la propia celda.
Si encuentras un truco para manipularlos directamente en VBA, me interesa, todos los problemas quedarían resueltos, yo no he encontrado nada
Ahora hay que intentar con funciones separadas como en tu ejemplo, no había pensado en esta pista. A probar...
eric
Si encuentras un truco para manipularlos directamente en VBA, me interesa, todos los problemas quedarían resueltos, yo no he encontrado nada
Ahora hay que intentar con funciones separadas como en tu ejemplo, no había pensado en esta pista. A probar...
eric
Hola,
Gracias por dedicar tanto tiempo a mi pregunta, no esperaba tanto. Visiblemente no hay una respuesta demasiado complicada.
Pero hacer manualmente en negrita la cantidad de datos que tengo es bastante inferior al tiempo que he pasado tratando de hacerlo rápidamente, así que no hay mucho valor añadido.
Si quieren seguir buscando una solución, no hay problema, estaré pendiente de la discusión, pero desde mi perspectiva, es más sencillo dejarlo y hacerlo a mano. Gracias a eriiic y a anónimo.
Ciao
Thierry
Gracias por dedicar tanto tiempo a mi pregunta, no esperaba tanto. Visiblemente no hay una respuesta demasiado complicada.
Pero hacer manualmente en negrita la cantidad de datos que tengo es bastante inferior al tiempo que he pasado tratando de hacerlo rápidamente, así que no hay mucho valor añadido.
Si quieren seguir buscando una solución, no hay problema, estaré pendiente de la discusión, pero desde mi perspectiva, es más sencillo dejarlo y hacerlo a mano. Gracias a eriiic y a anónimo.
Ciao
Thierry
Hola Thierry,
¿estás seguro de haber leído bien las respuestas?
Abres el archivo adjunto en el post 10, abres tu archivo, seleccionas las celdas de tu archivo donde están las fórmulas de concatenación y ejecutas la macro, y en las celdas de al lado encuentras la cadena formateada con negritas, colores, etc.
Y si abres este: http://www.cijoint.fr/cij77852548227558.xls
incluso puedes elegir sobrescribir tus fórmulas (offset 0) o pegar el resultado 20 columnas más allá si deseas preservar tus celdas ocupadas.
eric
¿estás seguro de haber leído bien las respuestas?
Abres el archivo adjunto en el post 10, abres tu archivo, seleccionas las celdas de tu archivo donde están las fórmulas de concatenación y ejecutas la macro, y en las celdas de al lado encuentras la cadena formateada con negritas, colores, etc.
Y si abres este: http://www.cijoint.fr/cij77852548227558.xls
incluso puedes elegir sobrescribir tus fórmulas (offset 0) o pegar el resultado 20 columnas más allá si deseas preservar tus celdas ocupadas.
eric
Hola
¡Muchas gracias "eriiic" por la información, la ayuda y la conversión para OpenOffice.org Calc!
(Gracias a todos también por reflexionar sobre el problema) o sobre los problemas planteados en las respuestas! :-)
(Intentemos dar una solución a todas las preguntas planteadas aquí, indirectamente en las respuestas)
* El programa de hojas de cálculo, Microsoft Excel o OpenOffice.org Calc, ¡no es fácil! ...
Gracias "eriiic", y gracias a todos por más información y ayuda. Gracias.
¡Hasta luego!
¡Muchas gracias "eriiic" por la información, la ayuda y la conversión para OpenOffice.org Calc!
(Gracias a todos también por reflexionar sobre el problema) o sobre los problemas planteados en las respuestas! :-)
(Intentemos dar una solución a todas las preguntas planteadas aquí, indirectamente en las respuestas)
* El programa de hojas de cálculo, Microsoft Excel o OpenOffice.org Calc, ¡no es fácil! ...
Gracias "eriiic", y gracias a todos por más información y ayuda. Gracias.
¡Hasta luego!
Última versión con opción de offset: http://www.cijoint.fr/cij77852548227558.xls
(offset 0 reemplaza las fórmulas por las cadenas con formato)
Const LF As String = "vblf"
Sub RecupFormatCel()
Dim c1 As Range, c2 As Range, dest As Range
Dim i As Integer, long1 As Long, ptr1 As Long, offset1 As Long
Dim formatCel As Variant
Dim ListeRef As Variant
Dim msg As String
msg = "¿A qué offset (en columnas) pegar el resultado?" & vbCrLf
msg = msg & "(si offset = 0 la fórmula original " & vbCrLf
msg = msg & "será reemplazada por la cadena formateada)"
offset1 = InputBox(msg, "Selección de offset resultado")
For Each c1 In Selection
f = c1.Formula
If Left(f, 1) <> "=" Then '¿fórmula?
MsgBox ("Error" & vbCrLf & "La celda " & c1.Address & " no contiene una fórmula de concatenación")
Exit Sub
Else
f = Mid(c1.Formula, 2) 'sí: eliminar =
End If
Set dest = c1.Offset(0, offset1) 'celda de destino
dest.Value = c1.Value
ListeRef = Split(f, "&&") ' dividir la fórmula
'
' reemplazo de "vbLF" por vbLf
While InStr(1, LCase(dest.Value), LF)
pos = InStr(1, LCase(dest.Value), LF)
dest = Left(dest.Value, pos - 1) & vbLf & Mid(dest.Value, pos + Len(LF))
Wend
' recuperación de los formatos
ptr1 = 1
For i = 0 To UBound(ListeRef)
Set c2 = Range(ListeRef(i)) ' dirección de la cadena
long1 = Len(c2.Value) ' longitud de la cadena
If LCase(c2.Value) = LF Then
' tratamiento vbLF
long1 = 1
Else
With c2.Font
formatCel = .FontStyle
dest.Characters(Start:=ptr1, Length:=long1).Font.FontStyle = formatCel
formatCel = .ColorIndex
dest.Characters(Start:=ptr1, Length:=long1).Font.ColorIndex = formatCel
formatCel = .Underline
dest.Characters(Start:=ptr1, Length:=long1).Font.Underline = formatCel
End With
End If
ptr1 = ptr1 + long1
Next i
Next c1
End Sub
Sub test()
Range("H3:H5,H7:H8").Select
RecupFormatCel
End Sub
Sub raz()
Range("I3:I8").ClearContents
End Sub
(offset 0 reemplaza las fórmulas por las cadenas con formato)
Const LF As String = "vblf"
Sub RecupFormatCel()
Dim c1 As Range, c2 As Range, dest As Range
Dim i As Integer, long1 As Long, ptr1 As Long, offset1 As Long
Dim formatCel As Variant
Dim ListeRef As Variant
Dim msg As String
msg = "¿A qué offset (en columnas) pegar el resultado?" & vbCrLf
msg = msg & "(si offset = 0 la fórmula original " & vbCrLf
msg = msg & "será reemplazada por la cadena formateada)"
offset1 = InputBox(msg, "Selección de offset resultado")
For Each c1 In Selection
f = c1.Formula
If Left(f, 1) <> "=" Then '¿fórmula?
MsgBox ("Error" & vbCrLf & "La celda " & c1.Address & " no contiene una fórmula de concatenación")
Exit Sub
Else
f = Mid(c1.Formula, 2) 'sí: eliminar =
End If
Set dest = c1.Offset(0, offset1) 'celda de destino
dest.Value = c1.Value
ListeRef = Split(f, "&&") ' dividir la fórmula
'
' reemplazo de "vbLF" por vbLf
While InStr(1, LCase(dest.Value), LF)
pos = InStr(1, LCase(dest.Value), LF)
dest = Left(dest.Value, pos - 1) & vbLf & Mid(dest.Value, pos + Len(LF))
Wend
' recuperación de los formatos
ptr1 = 1
For i = 0 To UBound(ListeRef)
Set c2 = Range(ListeRef(i)) ' dirección de la cadena
long1 = Len(c2.Value) ' longitud de la cadena
If LCase(c2.Value) = LF Then
' tratamiento vbLF
long1 = 1
Else
With c2.Font
formatCel = .FontStyle
dest.Characters(Start:=ptr1, Length:=long1).Font.FontStyle = formatCel
formatCel = .ColorIndex
dest.Characters(Start:=ptr1, Length:=long1).Font.ColorIndex = formatCel
formatCel = .Underline
dest.Characters(Start:=ptr1, Length:=long1).Font.Underline = formatCel
End With
End If
ptr1 = ptr1 + long1
Next i
Next c1
End Sub
Sub test()
Range("H3:H5,H7:H8").Select
RecupFormatCel
End Sub
Sub raz()
Range("I3:I8").ClearContents
End Sub
muy bonita demostración de los estilos aplicados al texto, pero ¿qué pasa cuando se trata de un formato personalizado?
ejemplo:
valores ingresados: A1=5 B1=10
valores mostrados: A1=0005 B1=0010
y me gustaría poder concatenar los valores manteniendo su formato (ej: C1 = [0005;0010]
¿es posible?
¡Gracias por tu ayuda!
...realmente tengo que ponerme a las macros -_-
ejemplo:
valores ingresados: A1=5 B1=10
valores mostrados: A1=0005 B1=0010
y me gustaría poder concatenar los valores manteniendo su formato (ej: C1 = [0005;0010]
¿es posible?
¡Gracias por tu ayuda!
...realmente tengo que ponerme a las macros -_-
- 1
- 2
Siguiente