Hacer Macro que copie cada cierto rango de valores
Hacer Macro que copie cada cierto rango de valores
Cada día hacemos experimentos en el laboratorio y después de hacer un previo tratamiento de estos datos me encuentro con un fichero en .txt que importo a calc con dos columnas: Tiempo ; Pixel. El caso es que me gustaría hacer una Macro que me busque cada 25 píxeles (o un cierto incremento en la segunda columna) y me copie esa fila (tiempo y pixel) en otro lugar de la página para así hacer un "vaciado" de datos efectivos.
Como dato importante a tener en cuenta y que me ha complicado mucho la vida: las columnas no siempre tienen la misma cantidad de datos (por eso lo del cierto incremento en la segunda columna). Es importante que sea la columna de píxels la que mande sobre que fila copiar. Adjunto un fichero de muestra.
En el caso ideal, quería que esta macro copiase los valores en otra hoja o fichero pero también he sido incapaz de conseguirlo. Pero basicamente quiero copiar cada cierto rango de píxels (un incremento de 25 des de el primero) en otras dos columnas junto con el tiempo correspondiente.
Alguno tiene alguna idea de como conseguir ésto? Lo siento, no he sido capaz de encontrarlo en este foro.
Muchas gracias y un saludo!
Como dato importante a tener en cuenta y que me ha complicado mucho la vida: las columnas no siempre tienen la misma cantidad de datos (por eso lo del cierto incremento en la segunda columna). Es importante que sea la columna de píxels la que mande sobre que fila copiar. Adjunto un fichero de muestra.
En el caso ideal, quería que esta macro copiase los valores en otra hoja o fichero pero también he sido incapaz de conseguirlo. Pero basicamente quiero copiar cada cierto rango de píxels (un incremento de 25 des de el primero) en otras dos columnas junto con el tiempo correspondiente.
Alguno tiene alguna idea de como conseguir ésto? Lo siento, no he sido capaz de encontrarlo en este foro.
Muchas gracias y un saludo!
- Adjuntos
-
- pruebamacro_190206.ods
- (17.92 KiB) Descargado 180 veces
OpenOffice 2.4 Ubuntu 16
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Hacer Macro que copie cada cierto rango de valores
Hola.
Te damos la bienvenida al Foro de OpenOffice / LibreOffice y, por favor, no dejes de leer la Guía de supervivencia.
Tal vez no necesites ninguna macro para hacer lo que yo he entendido que quieres hacer. Observa la hoja "Hoja2" del archivo adjunto, son fórmulas las celdas de color naranja.
La celda B1 de la "Hoja2" contiene el número de saltos que quieres realizar.
La celda B4 contiene la fórmula:
La celda C4 contiene la fórmula:
Seleccionamos B4 y C4 y copiamos hacia abajo. Se irán mostrando los valores cada x saltos, de acuerdo al número que figure en B1.
Si lo comentado no te sirve como solución, por favor, intenta dar más información.
Saludos cordiales.
Te damos la bienvenida al Foro de OpenOffice / LibreOffice y, por favor, no dejes de leer la Guía de supervivencia.
Tal vez no necesites ninguna macro para hacer lo que yo he entendido que quieres hacer. Observa la hoja "Hoja2" del archivo adjunto, son fórmulas las celdas de color naranja.
La celda B1 de la "Hoja2" contiene el número de saltos que quieres realizar.
La celda B4 contiene la fórmula:
Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$B$3;$B$1*(FILA()-3);0;1)
Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$C$3;$B$1*(FILA()-3);0;1)
Si lo comentado no te sirve como solución, por favor, intenta dar más información.
Saludos cordiales.
- Adjuntos
-
- pruebamacro_190206_Nankinpep_v1.ods
- LibO Calc 6.1.5
- (22.78 KiB) Descargado 208 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Hacer Macro que copie cada cierto rango de valores
PepeOooSevilla escribió:Hola.
Te damos la bienvenida al Foro de OpenOffice / LibreOffice y, por favor, no dejes de leer la Guía de supervivencia.
Tal vez no necesites ninguna macro para hacer lo que yo he entendido que quieres hacer. Observa la hoja "Hoja2" del archivo adjunto, son fórmulas las celdas de color naranja.
La celda B1 de la "Hoja2" contiene el número de saltos que quieres realizar.
La celda B4 contiene la fórmula:La celda C4 contiene la fórmula:Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$B$3;$B$1*(FILA()-3);0;1)
Seleccionamos B4 y C4 y copiamos hacia abajo. Se irán mostrando los valores cada x saltos, de acuerdo al número que figure en B1.Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$C$3;$B$1*(FILA()-3);0;1)
Si lo comentado no te sirve como solución, por favor, intenta dar más información.
Saludos cordiales.
Con esto me ha funcionado perfectamente.
Muchas gracias y un placer!
OpenOffice 2.4 Ubuntu 16
Re: Hacer Macro que copie cada cierto rango de valores
Buenas tardes,
como es normal, al trabajar, estaba intentando adaptar el código a mi uso y disfrute personal. Estaba revisándolo cuando me encontré con un par de problemas que no entiendo. Al intentar mover y/o utilizar distintas columnas con el mismo código me he dado cuenta de que no salta cada cuantas casillas le indico o que simplemente vale 0.
Entonces intentaré explicar lo que yo entiendo del código (pues es verdad que no lo he acabado de entender) y a ver si así me podéis ayudar.
Primero de todo, el código base de la casilla es: =OFFSET(CASILLADEREFERENCIA;Columna;Altura,Anchura) : el numero de columnas movidas para arriba o abajo.
Entonces, el código es:
Donde básicamente estamos cogiendo la casilla ubicada en 190204_captura... y la multiplicamos por $B$1*(FILA()-3) y el FILA()-3 no lo acabo de entender. Entonces entiendo que el 0;1 es simplemente la dimensión de las casillas en sí.
La verdad voy un poco perdido. Cualquier tipo de ayuda será bienvenida!
como es normal, al trabajar, estaba intentando adaptar el código a mi uso y disfrute personal. Estaba revisándolo cuando me encontré con un par de problemas que no entiendo. Al intentar mover y/o utilizar distintas columnas con el mismo código me he dado cuenta de que no salta cada cuantas casillas le indico o que simplemente vale 0.
Entonces intentaré explicar lo que yo entiendo del código (pues es verdad que no lo he acabado de entender) y a ver si así me podéis ayudar.
Primero de todo, el código base de la casilla es: =OFFSET(CASILLADEREFERENCIA;Columna;Altura,Anchura) : el numero de columnas movidas para arriba o abajo.
Entonces, el código es:
Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$B$3;$B$1*(FILA()-3);0;1)
La verdad voy un poco perdido. Cualquier tipo de ayuda será bienvenida!
PepeOooSevilla escribió:Hola.
Te damos la bienvenida al Foro de OpenOffice / LibreOffice y, por favor, no dejes de leer la Guía de supervivencia.
Tal vez no necesites ninguna macro para hacer lo que yo he entendido que quieres hacer. Observa la hoja "Hoja2" del archivo adjunto, son fórmulas las celdas de color naranja.
La celda B1 de la "Hoja2" contiene el número de saltos que quieres realizar.
La celda B4 contiene la fórmula:La celda C4 contiene la fórmula:Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$B$3;$B$1*(FILA()-3);0;1)
Seleccionamos B4 y C4 y copiamos hacia abajo. Se irán mostrando los valores cada x saltos, de acuerdo al número que figure en B1.Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$C$3;$B$1*(FILA()-3);0;1)
Si lo comentado no te sirve como solución, por favor, intenta dar más información.
Saludos cordiales.
OpenOffice 2.4 Ubuntu 16
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Hacer Macro que copie cada cierto rango de valores
Hola.
Intentaré explicarme teniendo por delante el archivo que subí:
1. En la celda B1 de la Hoja2 introducimos el número de saltos que queremos que se produzca, en nuestro caso 25.
2. En la celda B4 de la misma hoja está la susodicha fórmula cuyo segundo parámetro es:
Como estamos en B4, entonces FILA() vale 4 (el valor de la fila donde se encuentra), que al restarle 3 nos da como resultado 1, es decir, el primer salto es $B$1*1, que en este caso es 25 (25*1).
3. Al copiar la celda B4 hacia abajo, ahora nos encontramos en la celda B5, entonces FILA() vale 5 que al restarle 3 nos da como resultado 2, es decir, el segundo salto es $B$1*2, que en este caso es 50 (25*2).
4. En resumen, al copiar hacia abajo la fórmula, (FILA()-3) actúa como si fuera un contador, 1, 2, 3, 4, ... que al multiplicarlo por el número de saltos nos da el salto correspondiente a esa fila. Entonces, ¿por qué -3? Pues porque la primera celda donde escribimos la fórmula está en la fila 4. Si la primera celda de la fórmula fuera la B40 entonces tendríamos que restarle 39.
Saludos cordiales.
Intentaré explicarme teniendo por delante el archivo que subí:
1. En la celda B1 de la Hoja2 introducimos el número de saltos que queremos que se produzca, en nuestro caso 25.
2. En la celda B4 de la misma hoja está la susodicha fórmula cuyo segundo parámetro es:
Código: Seleccionar todo
$B$1*(FILA()-3)
3. Al copiar la celda B4 hacia abajo, ahora nos encontramos en la celda B5, entonces FILA() vale 5 que al restarle 3 nos da como resultado 2, es decir, el segundo salto es $B$1*2, que en este caso es 50 (25*2).
4. En resumen, al copiar hacia abajo la fórmula, (FILA()-3) actúa como si fuera un contador, 1, 2, 3, 4, ... que al multiplicarlo por el número de saltos nos da el salto correspondiente a esa fila. Entonces, ¿por qué -3? Pues porque la primera celda donde escribimos la fórmula está en la fila 4. Si la primera celda de la fórmula fuera la B40 entonces tendríamos que restarle 39.
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Hacer Macro que copie cada cierto rango de valores
Perfecto! Con esto ya puedo continuar muchísimas gracias.
En cuanto a los dos últimos parámetros de altura y anchura con valores 0;1 qué tipo de interés tienen?
En cuanto a los dos últimos parámetros de altura y anchura con valores 0;1 qué tipo de interés tienen?
OpenOffice 2.4 Ubuntu 16
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Hacer Macro que copie cada cierto rango de valores
Hola.
La función:
Devuelve un rango de celdas a partir de una celda dada. Un rango puede ser también una sola celda, que es el caso que nos ocupa.
Identifiquemos los parámetros:
Saludos cordiales.
La función:
Código: Seleccionar todo
DESREF(Referencia; Filas; Columnas; Altura; Anchura)
Código: Seleccionar todo
=DESREF(190204_captura_YARA_PMMA_H380_TB3min_A.$B$3;$B$1*(FILA()-3);0;1)
- Referencia: 190204_captura_YARA_PMMA_H380_TB3min_A.$B$3. Esta es la celda desde donde comienza "a contar".
Filas: $B$1*(FILA()-3). Es decir, ¿cuántas filas saltamos hacia abajo?
Columnas: 0. Cero, es decir, nos movemos en la misma columna, la columna B del parámetro "Referencia".
Altura: 1. Es decir, una sola celda.
Anchura: No existe. Este es un parámetro opcional de la función, si no existe entonces su valor es 0 (cero), es decir, seguimos en la misma columna B.
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.