Forums Últimos mensajes - Powered by IBM
 

Sobre concatenar mediante visual en excel

08/12/2008 - 04:21 por Anonimo | Informe spam
Un saludo y gracias de antemano.

Tengo un rango, digamos "a1:p100"

En cada fila de ese rango tengo varias columnas con datos pero de forma
irregular, me explico, igual en la primera fila tengo con datos 4 columnas,
en la fila 2, tengo 8 datos en las columnas

Estoy intentando crear un bucle que recorra todo el rango y me reconozca el
numero de columnas a la izquierda de un determinado valor, en este caso el
"-", y lo mismo para las columnas que este a la izquierda y que no esten
vacias

Ejemplo:

A.D. Cuevas del Castillo 2 - 0 AA.VV. La Marisma
C.D. Saltor Los Ríos 0 - 17 Real Rácing Club B
E.M.F. Santander B 2 - 3 P.A. Gimnástica A
E.M.F. Reocín A 8 - 0 C.D. Tropezón


Yo hago los siguiente: distribuyo el texto en columnas

Despues averiguo en que columna esta el texto "-"
Seguido coloco los equipos mediante el siguiente codigo:

Sub JOSEANGEL()

ultfila = Columns("A:A").Range("A65536").End(xlUp).Row

x = 1
l = 1


For Each rango In Range("a1:p" & ultfila)


DATO = InStr(1, "-", rango, vbBinaryCompare)


If rango <> "" Then

If DATO >= 1 Then

columna = rango.Column
FILA = rango.Row
datos = rango.Address




For I = 1 To columna - 2

Cells(x, 15 + I) = Range(datos).Offset(0, -((columna - I)))





Next I


x = x + 1




For j = 1 To 8


Cells(l, 25 + j) = Range(datos).Offset(0, j + 1)


Next j

l = l + 1

datos = rango.Address

dat = Range(datos).Offset(0, 1)
dat1 = Range(datos).Offset(0, -1)

For nov = 1 To columna - 2

Dim mat(43, 15)

mat(FILA, nov) = Range(datos).Offset(0, -(columna -
nov))


Next nov

For mes = 1 To 8

mat(FILA, mes) = Range(datos).Offset(0, mes + 1)

Next mes

Else: End If

Else: End If

Next rango

End Sub


Como ya me he perdido, lo que me gustaria es que con esos datos distribuidos
en columnas, buscar el caracter "-" que ya se como se hace. Despues me
gustaria que un bucle me recorriese todo los datos y me separese mediante
concatenación los dos equipos.

digamos que asi:

Z1 AA1
AB1
A.D. Cuevas del Castillo AA.VV. La Marisma 2-3
C.D. Saltor Los Ríos Real Rácing Club B 1-2
E.M.F. Santander B P.A. Gimnástica A
E.M.F. Reocín A C.D. Tropezón
Velarde Camargo C.F. S.D. Buelna
Atco. Perines B Peña Revilla


Utilizo excel 2007
 

Leer las respuestas

#1 Héctor Miguel
08/12/2008 - 08:56 | Informe spam
hola, 'anonimo-a' ! (o... Jose Angel ?)

me da la impresion de que copias/pegas datos desde alguna pagina de internet y luego tratas de acomodar los datos -?-
(creo que) te saldria menos laborioso si en lugar de separar texto en columnas por espacios, utilizas el caracter "-" -?-
o... si podemos asumir que los datos del ejemplo que expones estuviera en el rango [A1:A4] (o el que sea pero iniciando en A1)
y que no hay datos en las columnas B en adelante... prueba cambiando de macro por una +/- como la siguiente:

Sub Arregla_datos()
[a1].CurrentRegion.TextToColumns [a1], xlDelimited, , , , , , , 1, "-"
With [a1].CurrentRegion
.Value = Evaluate("transpose(transpose(trim(" & .Address & ")))")
.Offset(, 2).Resize(, 1).Value = Evaluate("transpose(transpose(right(" & _
.Columns(1).Address & ",2)&"" - ""&left(" & .Columns(2).Address & ",2)))")
.Columns(1).Value = _
Evaluate("transpose(transpose(trim(left(" & .Address & ",len(" & .Address & ")-2))))")
.Columns(2).Value = _
Evaluate("transpose(transpose(trim(mid(" & .Address & ",3,100))))")
End With
[a1].CurrentRegion.EntireColumn.AutoFit
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
Tengo un rango, digamos "a1:p100"
En cada fila de ese rango tengo varias columnas con datos pero de forma irregular
me explico, igual en la primera fila tengo con datos 4 columnas, en la fila 2, tengo 8 datos en las columnas
Estoy intentando crear un bucle que recorra todo el rango y me reconozca el numero de columnas
a la izquierda de un determinado valor, en este caso el "-", y lo mismo para las columnas que este a la izquierda y que no esten vacias
Ejemplo:
A.D. Cuevas del Castillo 2 - 0 AA.VV. La Marisma
C.D. Saltor Los Ríos 0 - 17 Real Rácing Club B
E.M.F. Santander B 2 - 3 P.A. Gimnástica A
E.M.F. Reocín A 8 - 0 C.D. Tropezón
Yo hago los siguiente: distribuyo el texto en columnas
Despues averiguo en que columna esta el texto "-"
Seguido coloco los equipos mediante el siguiente codigo: (...)
Como ya me he perdido, lo que me gustaria es que con esos datos distribuidos en columnas
buscar el caracter "-" que ya se como se hace. Despues me gustaria que un bucle me recorriese todo los datos
y me separese mediante concatenación los dos equipos.
digamos que asi:
Z1 AA1 AB1
A.D. Cuevas del Castillo AA.VV. La Marisma 2-3
C.D. Saltor Los Ríos Real Rácing Club B 1-2
E.M.F. Santander B P.A. Gimnástica A
E.M.F. Reocín A C.D. Tropezón
Velarde Camargo C.F. S.D. Buelna
Atco. Perines B Peña Revilla

Preguntas similares