Copiar Datos de una rango(hoja4) a otro rango (hoja1)

Discute sobre la aplicación de hojas de cálculo

Copiar Datos de una rango(hoja4) a otro rango (hoja1)

Notapor pato07 » Jue Jul 23, 2009 3:59 pm

Buen día tengo un problema porque necesito que me copie los datos de hacia un balance especificamente hacia la columna presupuesto como lo explico en el adjunto, pero que lo hale de la hoja 4 de acuerdo al mes que yo escriba.

Agradeciendo su ayuda. talvez no este bien explicado pero con el ejemplo lo van a poder ver.
Adjuntos
Prueba Real.ods
(21.82 KiB) 242 veces
pato07
 
Mensajes: 5
Registrado: Jue Jul 02, 2009 6:34 pm

Re: Copiar Datos de una rango(hoja4) a otro rango (hoja1)

Notapor mauricio » Jue Jul 23, 2009 5:40 pm

Hola a todos...

Para copiar rangos usas el método copyRange presente en cualquier hoja de calculo, su sintaxis es:

Hoja.copyRange( Destino As CellAddress, Origen As CellRangeAddress)

Primer ejemplo:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub CopiarRangos1()
Dim oHojaActiva As Object
Dim oOrigen As Object
Dim oDestino As Object

   oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
   'Rango a copiar
   oOrigen = oHojaActiva.getCellRangeByName( "A1:B3" )
   'Celda destino
   oDestino = oHojaActiva.getCellRangeByName( "D10" )

   'Copiamos el rango
   oHojaActiva.copyRange( oDestino.getCellAddress(), oOrigen.getRangeAddress() )
End Sub


Para copiar en una hoja diferente, solo tienes que establecer el destino correctamente en dicha hoja, el siguiente ejemplo, copiamos el rango B2:D5 de la ultima hoja del documento a la celda A1 de la primera:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub CopiarRangos3()
Dim oHojaOrigen As Object
Dim oHojaDestino As Object
Dim oOrigen As Object
Dim oDestino As Object

        oHojaOrigen = ThisComponent.getSheets().getByIndex( ThisComponent.getSheets().getCount() - 1 )
        oHojaDestino = ThisComponent.getSheets().getByIndex( 0 )

        'Rango a copiar
        oOrigen = oHojaOrigen.getCellRangeByName( "B2:D5" )
        'Celda destino
        oDestino = oHojaDestino.getCellRangeByName( "A1" )

        'Copiamos el rango
        oHojaDestino.copyRange( oDestino.getCellAddress(), oOrigen.getRangeAddress() )

        ThisComponent.getCurrentController().select( oDestino )
End Sub


Texto y ejemplos, extraídos de mis apuntes, creo que te resolverían bastantes dudas de macros en Calc, que es lo tengo más avanzado...

http://www.universolibre.org/archivos/A ... oBasic.odt

Saludos a todos...

Mauricio
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Copiar Datos de una rango(hoja4) a otro rango (hoja1)

Notapor FJCC-ES » Jue Jul 23, 2009 8:32 pm

Adjunte un archivo que demuestra una solución usando la función BUSCARV. Los textos en Hoja1 Columna B y Hoja4 Columna A tienen que ser idénticos. No eran idénticos en el archivo original.

De la Ayuda:
BUSCARV
Búsqueda vertical con referencia a las celdas adyacentes a la derecha Esta función comprueba si un valor específico esta contenido en la primera columna de una matriz. La función devuelve el valor en la misma fila de la columna llamada por el Índice. Si el parámetro Ordenar se omite o es establecido como VERDADERO o uno, se asume que los datos están ordenados de manera ascendente. En este caso, si el Criterio de búsqueda no es encontrado, el último valor que es más pequeño que el criterio será devuelto. Si Ordenar es establecido como FALSO o cero, una concordancia exacta debe ser encontrada, de otro modo el Error: Valor no disponible será el resultado. Así, con el valor cero de los datos no tiene que ser ordenados de manera ascendente.
La función de búsqueda admite expresiones regulares. Puede escribir "tod.*", por ejemplo, para buscar la primera aparición de "tod" seguido de cualquier carácter. Si desea buscar texto que también sea una expresión regular, cada carácter debe ir precedido de una doble barra inversa (\). Puede activar y desactivar la evaluación automática de expresión regular en Herramientas - Opciones - StarOffice Calc - Calcular.
Sintaxis
=BUSCARV(CriteriodeBúsqueda; Matriz; Índice; Ordenar)
CriteriodeBúsqueda es el valor busca para la primer columna de la matriz.
Matriz es la referencia, la cual está compuesta por al menos dos columnas.
Índice es el número de la columna en la matriz que contiene el valor a devolver. La primera columna tiene el número 1.
Ordenar es un parámetro opcional que indica si la primera columna en la matriz es ordenada de manera ascendente. Ingrese el valor Booleano FALSO o cero si la primera columna no esta ordenada de manera ascendente. Las columnas ordenadas pueden ser buscadas más rápido y la función siempre devuelve un valor, incluso si el valor de búsqueda no fue acompañado, si esta entre el valor más alto y más bajo de la lista ordenada. En las listas sin ordenar, la búsqueda del valor debe corresponder exactamente. De lo contrario, la función devolverá este mensaje: Error: Valor no disponible .
Manejo de celdas vacias
Ejemplo
Desea introducir el número de un plato en el menú en la celda A1, y el nombre del plato para aparezca como texto en las celdas vecinas (B1). El Número para el Nombre asignado esta contenido en la matriz D1:E100. D1 contiene 100, E1 contiene el nombre Sopa de vegetales, y así sucesivamente, para 100 elementos del menú. Los números en la columna D son ordenados de manera ascendente; por lo tando, el parámetro opcional Ordenar no es necesario.
Introduzca la fórmula siguiente en B1:
=BUCARV(A1;D1:E100;2)
Al introducir un número en A1, en B1 aparece rápidamente el texto contenido en la segunda columna de la referencia D1:E100. Si se introduce un número inexistente, el texto que aparece es el correspondiente al número inferior más cercano. A fin de que esto no ocurra, hay que introducir un último parámetro FALSO en la fórmula de forma que en caso de introducir un número inexistente la función produzca como resultado un mensaje de error.
Adjuntos
Prueba Real FJCC.ods
(13.54 KiB) 230 veces
FJCC-ES
 
Mensajes: 700
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Copiar Datos de una rango(hoja4) a otro rango (hoja1)

Notapor Néstor Londoño B. » Sab Jul 25, 2009 7:47 am

Saludos: En ésta oportunidad quiero presentar el uso de la función de Calc Buscar, para poder hacerla trabajar hay de reorganizar el archivo de la hoja 4 y lo hago en la Hoja3 cambiando las filas a columnas y viceversa El manejo de la función Buscar se efectúa en la columna G y la macro para reorganizar un archivo está como una macro anexa al archivo.
Nota: La hoja de Calc desde donde Ud llama la función puede tener el formato y los campos en diferentes disposiciones, Encabezado, campos ligados espacios en las filas, pero en la hoja donde Ud. Busca los datos debe estar ordenada, por la columna que busca, y solo permite que tenga el nombre de la columnas.
Adjuntos
Prueba Real FJCCNLB.ods
(19.4 KiB) 256 veces
Néstor
S,O. Ubuntu 15 AOO_4.0.1
Néstor Londoño B.
 
Mensajes: 261
Registrado: Lun Dic 01, 2008 7:59 am
Ubicación: Pereira, Colombia

Re: Copiar Datos de una rango(hoja4) a otro rango (hoja1)

Notapor pato07 » Jue Jul 30, 2009 3:24 pm

Muchas Gracias por su ayuda, estoy probando las soluciones que ustedes me brindan, cualquier cosa se las consulto nuevamente.
pato07
 
Mensajes: 5
Registrado: Jue Jul 02, 2009 6:34 pm


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 18 invitados