Página 1 de 1

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

NotaPublicado: Jue Jul 23, 2009 3:59 pm
por pato07
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.

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

NotaPublicado: Jue Jul 23, 2009 5:40 pm
por mauricio
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

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

NotaPublicado: Jue Jul 23, 2009 8:32 pm
por FJCC-ES
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.

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

NotaPublicado: Sab Jul 25, 2009 7:47 am
por Néstor Londoño B.
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.

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

NotaPublicado: Jue Jul 30, 2009 3:24 pm
por pato07
Muchas Gracias por su ayuda, estoy probando las soluciones que ustedes me brindan, cualquier cosa se las consulto nuevamente.