Esta es la fórmula que aparece en el enlace DDE de una aplicación en Excel
{='F9-Cpa'|'001'!'[17-11-03]@BRIE5720001'} que viene a ser el saldo de la
cuenta "5720001" el 17/11/2003
Solamente quiero poder meterle automaticamente la fecha y la cuenta de
acuerdo con los valores de unas celdas
por ejemplo si en la celda b3 estuviese la fecha "31-12-03" y en la b4 el
valor 4500001 querría que funcionase esto:
{='F9-Cpa'|'001'!'[+B3]@BRIE+B4'}
¿Como debo escribir la fórmula para que funcione?
Ejemplo :
A1 tengo {='F9-Cpa'|'001'!'[17-11-03]@BRIE5720001'}En la hoja muestra
33456,98 ? (obviamente está calculando el enlace DDE)
a2 tengo 18-11-03
a3 tengo 450001
quiero sustituir [17-11-03] por a2 y 5720001 por a3 en a4 de forma que en
a4 en la bara de formulas aparezca
{='F9-Cpa'|'001'!'[18-11-03]@BRIE4500001'}
y en la celda su valor (por ejemplo 87,34?)
En F1 tengo el mes al que quiero obtener el saldo de una cuenta o de una raíz, y en F2 el código de la cuenta o raíz. Los datos quiero que aparezcan en E1. En el módulo de la hoja (click derecho sobre su etiqueta->Ver codigo) tengo lo siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$F$1" And Target.Address <> "$F$2" Then Exit Sub
Me.Range("E1").Formula = "=DIM|A!'SALDOF(" & Me.Range("F1") & ";" & Me.Range("F2") & ")'"
End Sub
Al cambiar una de las dos celdas (F1 ó F2), el evento modifica automáticamente la fórmula en E1, con lo que el saldo se actualiza.
En tu caso, el código podría ser algo como:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" And Target.Address <> "$A$3" Then Exit Sub
Me.Range("A1").Formula = "='F9-Cpa'|'001'!'[" & Format(A2,"DD-MM-YY") & "]@BRIES" & Me.Range(A3) & "'"
End Sub
Quizás tengas que cambiar Formula por FormulaArray, aunque la verdad es que no termino de entender por qué tus fórmulas tienen que estar encerradas entre llaves (normalmente, en Excel esto significa que son fórmulas matriciales...). De todas formas no puedo garantizar que el código vaya a funcionar porque, lógicamente, no he podido probarlo dado que no tengo el mismo programa de contabilidad que tú.
Un saludo.
Fernando Arroyo
MS MVP - Excel
"Anonimo" <ano...@soy.es> escribió en el mensaje news:ownub.34941$Ip6.6...@news-reader.eresmas.com...
"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> escribió en el mensaje
news:#XIOAler...@TK2MSFTNGP12.phx.gbl...
="=suma(b2:c2)"
Si
- copiamos esta celda
- hacemos un pegado especial (sólo valores) en otra celda
- hacemos Edición->Reemplazar poniendo el signo igual tanto en "Buscar:" como en "Reemplazar con"
el resultado final será que la cadena de texto se habrá convertido en una fórmula. Como verás, no habría ningún problema en que la fórmula inicial se construyera a base de las funciones Extraer, Izquierda, etc., tal como dices al principio de tu mensaje.
Una variante de esto mismo sería usar el método Evaluate, pero a mí no me funciona bien con los enlaces DDE. De todas formas, si quieres probar dímelo y te pongo la función con que estuve trasteando.
El método más elegante y práctico me sigue pareciendo el uso del evento Worksheet_Change, el cual podría ser perfectamente capaz de modificar cien fórmulas, a condición de que se le indiquen las cuentas o raíces (quizás tardaría un poco, pero lo haría). Dices que tienes un balance, por lo que supongo que los códigos de las cuentas cuyos saldos necesitas estarán en algún sitio de la hoja. Sería posible construir los enlaces DDE partiendo de dichos códigos y la fecha del sistema. Si estás interesado en esta posibilidad, tendrás que decirme en qué rangos de celdas se encuentran y en qué rangos deberían ir las fórmulas.
Un saludo.
Fernando Arroyo
MS MVP - Excel
"Anonimo" <ano...@soy.es> escribió en el mensaje news:5Jsub.37639$Ip6.6...@news-reader.eresmas.com...
Como mi nivel en Excel es muy basico deseché el uso de los eventos
WorkSheet_Change y opté por partir de una fórmula en tipo texto y a partir
de ella hacer las modificaciones pertinentes en función de las cuentas,
fechas, etc...
Al final me quedan todas las fórmulas en modo texto y con una macro las
copio como valores y les reemplazo el signo "=" y todo queda perfecto.
Quizás no es muy ortodoxo pero sí muy efectivo.
Gracias una vez más..
"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> escribió en el mensaje
news:erJAOYor...@TK2MSFTNGP12.phx.gbl...