Saludos a todos,
tengo una situación y quiero saber si pudieran apoyarme con ello
La situación es la siguiente: tengo la siguiente matriz de datos(tabla abajo), en la cual se estan registrando datos de manera cotidiana, requiero procesar dicha información de manera estadística, pero me encuentro con el siguiente problema: necesito determinar el rango de la matriz descrita, se debe de realizar de la siguiente manera:
Rango: (D1-C1)=4.1, (E1-D1)=2.2, (F1-E1)=-4.9,(G1-F1)=-2.5 4.1 2.2 -4.9 -2.5
(C2-G1)=-1.3,(D2-C2)=1.1, (E2-D2)=-82.30, (F2-E2)=77.71,(G2-F2)=-2.11 -1.3 1.1 -82.30 77.71 -2.11
(C3-G2)..............
.
.
al final debo de obtener el promedio de todos los datos, el problema es el siguiente, cuando tengo una celda vacia me arroja un rango muy elevado como se ve en el ejemplo arriba y no puede ser asi, yo necesito hacer que se omitan dichas celdas vacias, cabe mencionar que en la matriz no siempre estan las mismas celdas vacias, es aleatorio,
intenté formularlo con la función si(), pero de manera anedada, me funciona pero toma la primera celda como si tuviera valor, por ejemplo, si en la celda c1 hubiera valor, entonces la función me restaria el valor de d1-c1 y da un valor correcto, pero que pasa si la celda c1 no tuviera valor, aun asi la funcion me haria la suma dandome un valor muy alto.
es donde pido que me apoyen para ver la posibilidad de formularlo correctamente un otra forma que se les ocurra, espero me haya explicado correctamente, de cualquier forma anexo un archivo a éste mensaje en la cual se aprecia perfectamente la formulación que he hecho, la sombreado de gris es la matriz que se esta llenando con numeros de manera aleatoria, a la derecha lo que esta en rojo fue la primera formulación que hice para que la primera celda la tomar como si tuviera valor, lo que esta en verde trate de formular la segunda celda pero ya no obtube resultado y me di cuenta que conforme se agregan funciones si() se vuelve mas dificil de entender.
espero puedan apoyarme con ello, ya que actualmente tengo que trabajar con los datos de manera manual copiar y pegar y eliminar vacios, pero la cuestion es que son mas de 100 matrices por separado y es mucho tiempo el que pierdo.
es por ello que recuro a Ud los expertos.
Fabián
c | d | e | f | g | ||
Bitmap
| 83.60 | 87.70 | 89.90 | 85.00 | 82.50 | |
2 | 81.20 | 82.30 | 77.71 | 75.60 | ||
3 | 77.50 | 85.20 | 75.60 | 77.11 | 75.70 | |
4 | 80.50 | 81.30 | 72.37 | 78.32 | 82.85 | |
5 | 79.40 | 83.70 | 82.65 | 86.68 | 83.66 | |
6 | 79.20 | 81.20 | 81.50 | 87.40 | 81.80 | |
7 | 83.50 | 80.10 | 84.00 | 85.50 | 84.20 | |
8 | 86.50 | 81.70 | 84.70 | 81.30 | 78.80 | |
9 | 85.82 | 85.22 | 82.10 | 86.30 | 90.00 | |
10 | 81.40 | 82.33 | 81.50 | 83.30 | 84.00 | |
11 | 77.70 | 75.44 | 81.50 | 87.40 | 82.10 | |
12 | 81.53 | 72.85 | 85.80 | 84.60 | 85.30 | |
13 | 74.00 | 80.50 | 80.00 | 83.40 | 82.40 | |
14 | 83.70 | 84.10 | 79.10 | 78.20 | 82.30 | |
15 | 75.50 | 85.50 | 79.50 | 81.10 | 80.40 | |
16 | 85.50 | 88.60 | 84.40 | 79.20 | 85.30 | |
17 | 86.60 | 86.00 | 86.00 | 84.50 | 83.00 | |
16 | 83.20 | 82.10 | 84.10 | 85.50 | 84.00 | |
19 | 84.60 | 82.50 | 82.90 | 85.20 | 81.40 | |
20 | 82.50 | 83.90 | 81.00 | 75.20 | 84.40 | |
21 | 79.00 | 74.20 | 85.50 | 85.00 | 84.80 | |
22 | 81.40 | 89.60 | 88.30 | 87.00 | 83.80 |
Adjunto | Tamaño |
---|---|
![]() | 48.5 KB |
al momento de enviarlo se movio la matriz como la habia acomodado en el mensaje, en el archivo anexo se pueden dar mejor una idea....
saludosa todos
Unas preguntas.
¿qué quieres calcular? hablas de una media, pero deduzco de la hoja entiendo que lo que quieres es calcular la diferencia de un dato con el anterior (con el anterior que tenga dato)
¿es fundamental esa presentación en 6 columnas? ¿son conceptos diferentes?¿qué representa cada fila?
porque igual sería todo más cómodo si los datos estuviesen en una columna, se eliminan los vacíos y listo.
------
Ya sé Excel, pero necesito más.
pacomegia, gracias por apoyarme,
Quiero calcular el rango entre cada dato y al final obtener un promedio, el formato de 6 columnas es fundamental, ya que así es como se capturan los datos, cada fila representa la calidad de un producto determinada a cierta hora, por ende en cada fila son 6 calidades analizadas de manera aleatoria, más no siempre se toman las 6 muestras.
se me habia ocurrido utilizar macros, de ahi lo que anteriormente te preguntaba en ejecutar varias macros, con ésto intenté llamar la información del archivo original y pegara la información en otra hoja, ahi deberia la macro eliminar vacios y todo, más sin embargo cuando la ejecuto si lo hace bien, pero cuando se modifican los datos en el archivo original, la macro ya no funciona porque ya no llama la información actualizada.
igual te agradeceira si se te ocurre alguna forma de hacerlo, a final de cuentas puede ser modificado, más no he podido encontrar la forma de hacerlo.
por tu apoyo gracias
echa un vistazo a este envío http://www.necesitomas.com/reordenar_datos_excel
Explica una conversión parecida a la que necesitarías para reordenar los datos (en el ejemplo hay encabezados y en tu caso no, pero es simplemente ajustar el bucle).
Como tus datos se actualizarán, debes plantea la macro para que tome los datos desde la hoja actualizada y los ponga donde hagas el resumen.
tu proceso sería recibir los datos nuevos, y pulsar un botón para que los pase a la hoja de resumen que ya tendrás configurada (que sobreescriba los datos antiguos y ponga los actualizados, porque la macro no tarda nada en hacer esto)
------
Ya sé Excel, pero necesito más.
A mí se me ocurre aplicar una macro que "recoloque" los datos en una sola columna. En una segunda pasada, eliminas las filas vacías a la vez que copias la fórmula en la segunda columna.
Ya solo te queda hacer la media de los valores de la segunda columna.
Sería algo así:
Sub recoloca()
Dim fila, columna As Integer
Dim marcador As Boolean
Range("C2").Select
Do While ActiveCell.Value <> "FIN"
fila = ActiveCell.Row
For columna = 0 To 4
Cells(1 + (fila - 2) * 5 + columna, 10).Value = Cells(fila, columna + 3).Value
Next
ActiveCell.Offset(1, 0).Select
Loop
Cells(1 + (fila - 2) * 5 + 5, 10).Value = "FIN"
Range("J1").Select
Cells(2, 11).Formula = "=J1+J2"
Do While ActiveCell.Value <> "FIN"
If ActiveCell.Value = "" Then
marcador = True
ActiveCell.Delete xlShiftUp
End If
If Not marcador Then ActiveCell.Offset(1, 0).Select
marcador = False
Loop
fila = ActiveCell.Row - 1
Range("K2").Select
Selection.AutoFill Destination:=Range("K2:K" & fila)
Range("L1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(C[-1])"
Range("L1").Select
End Sub
Perdona, Paco, contestamos a la vez.
y eso que aquí que no hay mucho tráfico, imagínate cómo tiene que ser en un foro de millones de visitantes.
voy a pensar en establecer turnos.
------
Ya sé Excel, pero necesito más.
Muchas gracias a ambos, realmente sus aportaciones son increibles y muy buenas.
intentare realizar lo que ustedes me indican y si se me atora algo por ahi les estaré pididendo ayuda de nueva cuenta.
Saludos