PEGADO ESPECIAL ??

20/01/2008 - 18:46 por Orfao | Informe spam
Hola Foristas !
Cual es el procedimiento/metodo para copiar de un libro a otro una columna
contentiva de formulas que hacen referencia a un rango cuyo nombre exixte en
ambos libros.
por ej:
=+SI($AU$1,0,sglobal1(1,INDIRECTO("g"&(A3-1)*15+2&":g"&A3*15+1),material,6,INDIRECTO("h"&(A3-1)*15+2&":h"&A3*15+1))*E3/F3)
esta formula de una celda a copiar hace referencia a material (rango
definido en el libro1 donde esta inicialmente la formula)
y deseo copiarla a libro2 en el que existe un rango identico al primero
(inclusive con los mismos datos/formulas/valores) y con el mismo nombre por
lo que la formula en libro2 deberia quedar igual a la primera, es decir:
=+SI($AU$1,0,sglobal1(1,INDIRECTO("g"&(A3-1)*15+2&":g"&A3*15+1),material,6,INDIRECTO("h"&(A3-1)*15+2&":h"&A3*15+1))*E3/F3)

cuando hago un pegado especial: "Formulas", me presenta una ventana donde me
indica que el rango existe y si deseo cambiarlo o no ?
como evito que se presente el mensaje ( ya que estoy tratando de copiar y
pegar via macro (sin intervencion del usuario).
Gracias...
Me alimento del conocimiento de todos

Preguntas similare

Leer las respuestas

#6 Orfao
21/01/2008 - 14:56 | Informe spam
Hola Hector !
En el reciente caso que expuse, la formula a copiar es:
=+SI($AU$1;0;sglobal2(1;INDIRECTO("L"&(A6-1)*15+2&":L"&A6*15+1);SI(GENERAL!$H$6=2;petrolero;personal);5;INDIRECTO("M"&(A6-1)*15+2&":M"&A6*15+1);INDIRECTO("N"&(A6-1)*15+2&":N"&A6*15+1))*(1+GENERAL!H$29)*E6/F6+sglobal2(1;INDIRECTO("L"&(A6-1)*15+2&":L"&A6*15+1);SI(GENERAL!$H$6=2;petrolero;personal);6;INDIRECTO("M"&(A6-1)*15+2&":M"&A6*15+1);INDIRECTO("N"&(A6-1)*15+2&":N"&A6*15+1))*(1+GENERAL!H$29)*E6/F6)

Se trata de crear dos libros identicos (casi- porque en uno tengo por
ejemplo la formula desde a1 hasta a5 y en el otro la tengo desde a1 hasta
a600) con los mismos formatos y las mismas formulas pero con datos diferentes
por lo que no puedo copiar las hojas completas (solo algunas columnas). la
funcion sglobal2 (comentada en otro un post anterior -Tal ves la recuerdes)
es la siguiente:
Function SGLOBAL2(Ho As Integer, A As Range, B As Range, C As Integer, D As
Range, E As Range)
Dim X As Integer
Dim Y As Integer
Dim H As Variant
Set H = ThisWorkbook.Sheets(Ho)
SGLOBAL2 = 0
X = A.Count
For Y = 0 To X - 1
If H.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL2 = SGLOBAL2 + Application.WorksheetFunction.VLookup(H.Cells(A.Row +
Y, A.Column), B, C, 0) * H.Cells(D.Row + Y, D.Column) * H.Cells(E.Row + Y,
E.Column)
End If
Next
End Function

Con respecto al codigo utilizado para el pegado, no lo tengo (realmente
esperaba que alguien me indicara como hacerlo -a manera de ejemplo). he
probado copiar y pegar especial manualmente. por eso veo las ventanas de
advertencia y opciones.

Espero que con esto quede un poquitico mas clara mi(s) duda(s).
Gracias...

Me alimento del conocimiento de todos


"Héctor Miguel" wrote:

hola, moises !

1) no creo que JJE tenga/encuentre/... razones para sentirse "ofendido" ?...
si al fin de cuentas resolvio "la parte" de la situacion que necesitas resolver
(o sea, lo que expusiste "explicitamente" en tu consulta original) :))
(de todas formas, lo dejo a su mejor criterio) ;)

2) lo que no esta (aun) resuelto es (obviamente) lo que se habia quedado "en el tintero" :D

__ 3 __
> ... en este caso no era realmente lo que buscaba. me explico:
> en el caso de la formula expuesta funciona aceptando la primera opcion
> pero en otro caso donde en la formula hago referencia a dos rangos
> he intentado el pegado especial en forma manual y con cualquiera de las dos respuestas
> se crea la referencia al libro original de donde estoy copiando. Esto es realmente lo que deseo resolver.
> sucede tambien cuando en la formula hago referencia a una hoja distinta a la que estoy copiando
> independientemente de que en el libro a pegar exista una hoja con el mismo nombre.

3) es probable que esta parte tenga varias "implicaciones" poco obvias (a ver si damos con ellas)...

a) asumo que en la parte de formula que expusiste: -> "...sglobal1(1,INDIRECTO..."
"sglobal1" se refiere a una funcion personalizada que debiera existir de manera "transparente" para ambos libros
(de lo contrario, podria ser tambien "causa" de la generacion de vinculos externos) -?-

b) si el detalle de vinculos externos persiste (o se concreta) con nombres de otras hojas...
es probable que dicho/s nombre/s no sea/n "inherente/s" al libro en su conjunto (si no mas bien a la hoja "en particular") -?-

c) hablando de nombres (y hasta donde se)... estos pueden existir (al menos) en dos "niveles" (te paso detalles al final)

d) no estaria "de sobra" si expones (al menos) la parte de codigo con que haces el "pegado" de formulas entre libros ;)
(probablemente, la ultima solucion seria hacer un reemplazo de vinculos externos por vinculos al libro "pegado") -?-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

"hablando de nombres" y la administracion que les hace excel:

1) cuando asignas nombres con referencia a rangos excel aplica (por omision) -primero- nombres a nivel global (para todo el libro)

2) cuanto "tratas" de asignar un nombre repetido en otra hoja, excel te remite al primero que se hubiera definido (a su hoja original)
a menos que...

3) cuando copias una hoja que contiene nombres... NO hay problemas...
excel resuelve este tipo de "conflictos" generando un nuevo "set" de nombres relativos a la nueva hoja

4) si deseas definir (en varias hojas) nombres usando los que ya existen...
-> deberas ANTEPONER el nombre de la hoja y el signo "!" (cierre de admiracion), y en estos casos...
-> el nombre que aparecera en la caja de nombres o en el dialogo de "pegar nombre", sera el correspondiente a la hoja activa
-> un nombre definido a nivel local (observa que) al re/definir el nombre, aparece "su hoja" en la parte la derecha en la caja

en resumen:
a) los nombres son "parte de..." el libro que los contiene (o de cada hoja si existe nombres repetidos/duplicados)
b) cuando "llamas" nombres para formar parte de tus formulas...
b.1) el que aparece primero el el que se refiera a la hoja con la formula (en el caso de nombres iguales en varias hojas)
b.2) si la hoja no tiene "el nombre" que necesitas, el que aparecera es el definido "globalmente" (el primero que se asigno)
b.3) cuando necesites hacer referencia a un "mismo nombre" pero de otra hoja, usa: =nombre_de_la_hoja!nombre_definido



Respuesta Responder a este mensaje
#7 Héctor Miguel
22/01/2008 - 03:00 | Informe spam
hola, moises !

(hasta donde se)... cuando copias las formulas entre hojas de diferente libro...

1) si (solo) hacen referencia a nombres que existen en ambos libros...
la advertencia es (precisamente) para definir a cual de los nombres haran referencia las nuevas formulas (original o propio)
en el caso inicial que exponias, al no existir referencias (directas) a otras hojas, basta con omitir la alerta (nombres al libro propio)

2) cuando incluyen referencias a otras hojas (aun existiendo las mismas hojas en los dos libros)...
a) por muy parecidos que sean los libros... no dejan de ser libros distintos (o sea, las formulas)...
b) se van "con todo y su referencia al libro original" (los vinculos que necesitas evitar)
c) "esto" es normal (recuerda que el motor de una hoja de calculo es llevar la pista de cual celda depende de cual otra)

3) para "pegar formulas" con este tipo de referencias, por codigo debes usar la propiedad .Formula...
(p.e.) <rango_destino>.Formula = <rango_origen>.Formula
OJO: se asume que las hojas de referencia (origen) tambien existen en (el libro del rango) destino
con lo que los vinculos se quedan donde corresponde (cada uno con su cada cual) :))
solo asegurate que la formula la "traspasas" en la misma celda entre ambas hojas de los diferente libros
(a menos que no sea relevante cualquier tipo de referencias -semi-absolutas/relativas) -?-

4) obviamente, una ves "duplicada" UNA de las formulas, sera necesario "correr/rellenar/..."
el resto de celdas "correspondientes" (en el libro de destino)

5) otra alternativa es continuar con el uso de la funcion "indirecto" para hacer referencia al nombre de la hoja -?-

si cualquier duda... comentas ?
saludos,
hector.

__ la consulta original __
En el reciente caso que expuse, la formula a copiar es:
=+SI($AU$1;0;sglobal2(1;INDIRECTO("L"&(A6-1)*15+2&":L"&A6*15+1);SI(GENERAL!$H$6=2;petrolero;personal);5;INDIRECTO("M"&(A6-1)*15+2&":M"&A6*15+1);INDIRECTO("N"&(A6-1)*15+2&":N"&A6*15+1))*(1+GENERAL!H$29)*E6/F6+sglobal2(1;INDIRECTO("L"&(A6-1)*15+2&":L"&A6*15+1);SI(GENERAL!$H$6=2;petrolero;personal);6;INDIRECTO("M"&(A6-1)*15+2&":M"&A6*15+1);INDIRECTO("N"&(A6-1)*15+2&":N"&A6*15+1))*(1+GENERAL!H$29)*E6/F6)

Se trata de crear dos libros identicos
(casi- porque en uno tengo por ejemplo la formula desde a1 hasta a5 y en el otro la tengo desde a1 hasta a600)
con los mismos formatos y las mismas formulas pero con datos diferentes por lo que no puedo copiar las hojas completas
(solo algunas columnas). la funcion sglobal2 (comentada en otro un post anterior -Tal ves la recuerdes) ...
Con respecto al codigo utilizado para el pegado, no lo tengo (realmente esperaba que alguien me indicara como hacerlo -a manera de ejemplo).
he probado copiar y pegar especial manualmente. por eso veo las ventanas de advertencia y opciones...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida