Organizar datos en columnas

cgcamal

Active Member
Joined
May 2, 2007
Messages
472
Hola a todos,

Tengo datos extraidos en formato de texto de muchos eventos ordenados(Evento 1, 2 ...) hacia abajo en bloques, con varios datos de clientes dentro del cuerpo de cada bloque pero con campos de información iguales en todos los bloques. Esta información al pasarla a Excel me queda más o menos de la forma siguiente:

Evento 1
Datos Cliente
Nombre Juan...
Telefono oficina 1234…

Telefono casa 4321…

Identidad XYZ…

Evento 2
Datos Cliente
Nombre María
Telefono oficina 4566..

Telefono casa 7689..

Identidad TYP…

Arriba muestro sólo dos eventos con la estructura que tengo, pero que deseo ordenar en columnas y filas como sigue:

Evento #, Nombre, Telefono oficina, Telefono casa, Identidad
1 Juan 1234… 4321… XYZ…
2 María 4566.. 7689.. TYP…
. . . . .
. . . . .
. . . . .

Quien me odría ayudar con ideas? se puede hacer con la función BUSCAR o sólo con alguna macro, algún tip por favor para comenzar.

Saludos y gracias de antemano. :)
 

Excel Facts

Waterfall charts in Excel?
Office 365 customers have access to Waterfall charts since late 2016. They were added to Excel 2019.
No puedes usar Excel Jeanni o la aplicacion de COLO, para pegar una tabla HTML de
1) tus datos cmo los tienes y
2) tus datos como los quieres

simplemente eso evitara marchas y contramarchas en la interpretacion de tu solicitud.....
 
Upvote 0
Galileo,

Lo siento, no he logrado poder colocar la información tabulada con ninguno de esos complementos, con Excel Jeanni, la tabla la pasa a HTML pero no sé como colocarla en el foro y con COLO aparentemente lo hace pero al darle copiar aparece solo cadena de texto, asi:

<TABLE><TBODY><TR><TD>Evento # 1 </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD></TD><TD>Información básica </TD><TD></TD><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TD>Cliente </TD><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD>Datos </TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD>Nombre: Juan </TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD>Apellido: Gómez </TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD>Identidad: TRF1235903 </TD></TR><TR><TD></TD><TD></TD><TD></TD><TD>Teléfono: 134249908 </TD><TD></TD></TR><TR><TD></TD><TD></TD><TD>Dirección </TD><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD>Residencial XYZ </TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>Evento # 2 </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD></TD><TD>Información básica </TD><TD></TD><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TD>Cliente </TD><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD>Datos </TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD>Nombre: Ana </TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD>Apellido: Pérez </TD></TR><TR><TD></TD><TD></TD><TD></TD><TD></TD><TD>Identidad: TRJ70153912 </TD></TR><TR><TD></TD><TD></TD><TD></TD><TD>Teléfono: 134249908 </TD><TD></TD></TR><TR><TD></TD><TD></TD><TD>Dirección </TD><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TD></TD><TD>Residencial PYL </TD><TD></TD></TR><TR><TD>. </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>. </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>. </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>Evento # N </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR></TBODY></TABLE>

(estos serían como los quiero)

<TABLE><TBODY><TR><TD>Evento </TD><TD>Nombre </TD><TD>Apellido </TD><TD>Identidad </TD><TD>Dirección </TD></TR><TR><TD>Evento # 1 </TD><TD>Juan </TD><TD>Gómez </TD><TD>TRF1235903 </TD><TD>Residencial XYZ </TD></TR><TR><TD>Evento # 2 </TD><TD>Ana </TD><TD>Pérez </TD><TD>TRJ70153912 </TD><TD>Residencial PYL </TD></TR><TR><TD>. </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>. </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>. </TD><TD></TD><TD></TD><TD></TD><TD></TD></TR><TR><TD>Evento # N </TD><TD>. </TD><TD>. </TD><TD>. </TD><TD>. </TD></TR></TBODY></TABLE>



Galileo, tal vez los podés traducir, gracias. :)
 
Last edited by a moderator:
Upvote 0
hola cgcamal,

Bienvenido otra vez. Mucho tiempo sin ver lo. Edité su post para que su información se viera mejor. :wink:

Obviamente se necesita VBA. Si nos puede mostrar el código que ha hecho. Con mucho gusto tratamos de ayudarle.

Saludos,
 
Upvote 0
Hola Greg, qué tal? mucho gusto!!

Mucho tiempo de ausencia al foro de mi parte, es cierto. Muchas gracias por darte el tiempo para editar mis datos, no pude colocarlos de manera explícita. Gracias de nuevo.

Bueno, con respecto al problema estuve haciendo una pequeña macro y después de prueba y error me ha funcionado más o menos bien, faltarían tal vez algunos ajustes o alguna sugerencia de tu parte para presentarla de manera más elegante o más corta.

Esto es lo que hice hasta ahora:

Code:
Sub Ordenar_datos_en_filas_y_columnas()
 
 
Dim Campos
 
Application.ScreenUpdating = False
 
Range("H2").Select
 
ActiveCell.Value = "=COUNTIF(R[-1]C[-5]:R[32000]C[-5], ""Evento*"")" 
 
For i = 1 To ActiveCell
 
For j = 0 To 5
 
Campos = Array("evento", "nombre", "apellido", "identidad", "teléfono", "residencial")
 
Cells.Find(What:=Campos(j), After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
 
Cells(i, j + 7) = ActiveCell.Value
 
Next
 
Next
 
Columns("G:L").EntireColumn.AutoFit
ActiveWindow.SmallScroll ToRight:=2
Range("H2").Select
 
Application.ScreenUpdating = True
 
End Sub
Saludos :)
 
Last edited by a moderator:
Upvote 0
Hola cgcamal,

No desesperas. Veré si puedo investigar su pregunta un poco hoy por la noche. He gastado las últimas noches conociendo los beneficios que Microsoft me ha ortogado como nuevo MVP de MS y el trabajo ha sido demasiado ocupado.

¿Cuál versión de Excel usa usted?
 
Upvote 0
No PUEDO DEJAR DE FELICITARTE Y NO ME CRITIQUES PORQUE "GRITÉ", porque hay casos en que corresponde...
BBRRRRRAAAAAAVVVVVVVVVVOOOOOOOOOO!!!!!!!!!!!!
 
Last edited by a moderator:
Upvote 0
OK, primeramente, por si acaso usted no sabía no soy el tipo quien anda regalando peces. Soy el tipo de profesor quien le enseña como pescar. Al menos que es un problema directo y sencillo, no doy soluciones completos sino que sirvo más como un faro. :wink:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:eek:ffice:eek:ffice" /><o:p></o:p>



Bueno, me gusta su idea de utilizar una matriz (array). Mi primera sugerencias:
  • mueve su listado al inicio y cambie la a un constante tipo hilera (string) delimitado por comas y cargue su matriz usando SPLIT().
  • Escribe su propia función que recibe un rango, una hilera (que será el elemento de su matriz) y devuelve otra hilera. La función hace la búsqueda dentro del rango y devuelve el valor deseado (no olvide de la función REPLACE().
  • Cambie su bucle interno para que use LBOUND() y UBOUND()
<o:p></o:p>

Haga estas cosillas uno por uno y ponga su código y veremos qué será nuestro paso siguiente.<o:p></o:p>
<o:p></o:p>
 
Last edited:
Upvote 0
Hola Greg, te felicito por los beneficios que Microsoft resolvió otrogar a alguien que sabe tanto y ayuda a aprender de manera tan cordial a los demás. Lo merecés.

Voy a intentar aplicar los consejos de programación que colocaste antes. Seguro que con eso será más que elegante, más eficiente y veloz en la ejecución.

He estado trabajando en otra macro, en la que tuve algunas barreras que superé de manera empíra aunque efectiva para el tiempo que tenía para la obtención de resultados, pero realmente falta optimizarla bastante. Despué me animaré a consultar algo sobre eso.

Por los momentos probaré lo que me decís, espero enterder cada paso.

Saludos cordiales :)
 
Upvote 0

Forum statistics

Threads
1,216,226
Messages
6,129,605
Members
449,520
Latest member
TBFrieds

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top