Consolidar varias hojas de celdas con textos

10/05/2008 - 15:15 por FSM | Informe spam
Estimados Sres. Tengo un problema que no sé resolver, espero que me
ayuden.
Tengo en un libro 30 hojas, y en cada una de ellas una columna con
palabras ordenadas alfabéticamente. Algunas hojas tienen 20 palabras y
otras 600.
Me gustaría poder reunir en una hoja sola todas las anteriores con las
siguientes características:
-Escribir en una columna la lista más larga.
-Ir añadiendo columnas de las otras hojas, pero escribiendo un SI o
NO, en función de si esa palabra está en la columna inicial o no está.
Si lo desean les envíaría un archivo reducido.
Atentamente,
Francisco

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
10/05/2008 - 23:17 | Informe spam
hola, Francisco !

mas que enviar un archivo (como ejemplo), serviria si comentas algunos detalles mas "visibles" (p.e.)
- cual es la "una columna" en las ~30 hojas esta la lista (o si son columnas distintas, como identificarlas)
- si TODAS las hojas del libro tienen una lista para consolidar (o hay hojas que deben ser excluidas)
- cualquier otro "detalle" que pudiera ser de impacto en el resultado que buscas -???-

saludos,
hector.

__ la consulta original __
Tengo en un libro 30 hojas, y en cada una de ellas una columna con palabras ordenadas alfabeticamente.
Algunas hojas tienen 20 palabras y otras 600.
Me gustaria poder reunir en una hoja sola todas las anteriores con las siguientes caracteristicas:
-Escribir en una columna la lista mas larga.
-Ir anadiendo columnas de las otras hojas, pero escribiendo un SI o NO
en funcion de si esa palabra esta en la columna inicial o no esta.
Si lo desean les enviaria un archivo reducido...
Respuesta Responder a este mensaje
#2 FSM
13/05/2008 - 01:16 | Informe spam
Saludos Héctor y ...

- Las listas de palabras están en la primera columna de todas las
hojas. Se trata de listados alfabéticos y están en la columna A.
- Todas las hojas del libro presentan la misma disposición, es decir
el listado de palabras está en la primera columna de las mismas.
- También he de decirte por si influye en algo, que aparte de esas
columnas hay otras que son la numeración, la inicial y el significado
de la palabra, pues el trabajo versa sobre un diccionario o
vocabulario particular de diferentes zonas de Castilla.

Gracias de nuevo

Francisco
Respuesta Responder a este mensaje
#3 Héctor Miguel
13/05/2008 - 07:28 | Informe spam
hola, Francisco !

- Las listas de palabras estan en la primera columna de todas las hojas... listados alfabeticos... en la columna A...
- ... por si influye en algo... aparte de esas columnas... la numeracion, la inicial y el significado de la palabra
... sobre un diccionario o vocabulario particular de diferentes zonas de Castilla...



la siguiente macro resulta (todo) un "trabalenguas" :-(( (pero) creo que hace +/- exactamente lo que necesitas (y algo mas)...
- primero, ordena las hojas segun cual listado en la columna A es mas largo que los otros
- despues, agrega una hoja (al inicio) llamada "compartiva" donde traspasa los nombres de las hojas y sus listas
- finalmente, agrega formatos condicionales para que "veas" (graficamente) las palabras (cols B ... ->) que SI estan en la columna A

copia/pega en un modulo de codigo normal y ejecuta SIN agregar tu la hoja de resumen y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Ordena_Compara_Listas()
Application.ScreenUpdating = False
Dim n As Integer, a As Integer, b As Integer, p As Range, x As String
With Worksheets: For n = 1 To .Count: b = n: For a = n + 1 To .Count
If Evaluate("counta('" & .Item(a).Name & "'!a:a)" & _
">counta('" & .Item(b).Name & "'!a:a)") Then b = a
Next: If b <> n Then .Item(b).Move .Item(n)
Next: With .Add(Before:=.Item(1)): .Name = "Comparativa": End With
For n = 2 To .Count: With .Item(n): [a1].Offset(, n - 2) = .Name
.Range(.[a1], .[a1].End(xlDown)).Copy [a2].Offset(, n - 2): End With: Next: End With
With ActiveSheet: .Cells.EntireColumn.AutoFit: Set p = .[b65536].End(xlUp).Offset(1)
p.Formula = "=countif($a:$a,a1)": x = Mid(p.FormulaLocal, 2): p.Clear: Set p = Nothing
With .UsedRange.Offset(, 1).Resize(, .Columns.Count - 1)
.FormatConditions.Add Type:=xlExpression, Formula1:="=" & x
With .FormatConditions(1): .Interior.ColorIndex = 19: .Font.ColorIndex = 3
End With: End With: End With
End Sub
Respuesta Responder a este mensaje
#4 FSM
14/05/2008 - 23:56 | Informe spam
Para Héctor Miguel

Excelente.
Enormemente agradecido. Es fenomenal. Eres un genio.
He probado la macro y funciona estupendamente.
Te estoy muy agradecido.

Posdata.
Una cuestión más, para este novato que soy.
¿Cómo puedo contar en cada columna las palabras coloreadas, es decir
las que tienen el formato condicional?
Saludos, y a tu disposición
Francisco
Respuesta Responder a este mensaje
#5 Héctor Miguel
15/05/2008 - 06:16 | Informe spam
hola, Francisco !

Una cuestion mas...
Como puedo contar en cada columna las palabras coloreadas
es decir las que tienen el formato condicional?



(en este caso) no es necesario contar "las que tengan color/formato/..."
sino las que cumplan la condicion: que se encuentren (al menos) una vez en la columna principal (A)

si suponemos que el rango mas largo (columna A) se extiende hasta la fila 36 (adapta el rango a tu realidad)
prueba con una formula +/- como la siguiente (p.e.) en la fila 38 de la columna B

[B38] =sumaproducto(contar.si($a$1:$a$36,b1:b36))

(y la copias/arrastras n_columnas mas)

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