ESCRIBIR FORMULA EN CELDA

12/08/2006 - 03:03 por Carlos | Informe spam
Buenas noches al grupo...

Quisiera escribir mediante código VB una formula a una celda.. luego
copiarla en un rango..

La cuestión es que no sé como se hace...

:o(

agradecería sus comentarios

Preguntas similare

Leer las respuestas

#6 KL
12/08/2006 - 15:57 | Informe spam
Hola Carlos,

Suponiendo que los codigos de proveedor estan en la columna [A] y empiezan a partir de la fila [2], prueba el siguiente codigo:

Sub test()
Dim col As String, rng As Range
col = "A"
With ActiveSheet
Set rng = .Range(.Cells(2, col), _
.Cells(.UsedRange.Rows.Count + .UsedRange.Row - 1, col))
End With
With rng
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
End Sub

Saludos,
KL


"Carlos" wrote in message news:
Hola KL...

Se me ha presentado otro problemilla..

Estoy manejando listados de pagos a proveerdores en dos monedas..

El listado al pasarlo a excel.. deja celdas en blanco (para el mismo
proveedor)

Debo copiar en esas celdas en blanco, el código del proveedor (celda
precedente).

Cómo le hago?


Selection.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeBlanks).Select




________________

KL ha escrito:

Hola Carlos,

La formula debe estar en ingles y las comillas deben rodearse de comillas. Ademas, he tenido que romper la cadena de texto que
representa a la formula para evitar problemas de formato de parrafos al enviarla por Internet:

Sub test1()
Range("E6").Formula = _
"=IF(ISERROR(IF(RIGHT(D6)= "" - "",-VALUE(SUBSTITUTE(D6,"" - "","""")),D6))" & _
","""",IF(RIGHT(D6)= "" - "",-VALUE(SUBSTITUTE(D6,"" - "","""")),D6))"
End Sub

La otra opcion (no muy recomendable por razones de compatibilidad) es usar la propiedad FormulaLocal:

Sub test2()
Range("E6").FormulaLocal = _
"=SI(ESERROR(SI(DERECHA(D6)= "" - "";-VALOR(SUSTITUIR(D6;"" - "";""""));D6))" & _
";"""";SI(DERECHA(D6)= "" - "";-VALOR(SUSTITUIR(D6;"" - "";""""));D6))"
End Sub

Por cierto, creo que la funcion VALOR (o VALUE en ingles) sobra en la formula.

Saludos,
KL


"Carlos" wrote in message news:
> Hola KL... ira lo que quisiera insertar...
>
> Range("E6").Formula = "=SI(ESERROR(SI(DERECHA(D6)= " -
> ";-VALOR(SUSTITUIR(D6;" - ";""));D6));"";SI(DERECHA(D6)= " -
> ";-VALOR(SUSTITUIR(D6;" - ";""));D6))"
>
> Pero se detiene con un error...
>
> Agradecido de antemano
>
>
> KL ha escrito:
>
>> Hola chicos,
>>
>> El codigo ofrecido por Abraham se puede reducir a lo siguiente:
>>
>> Sub Macro1()
>> Range("B2:B10").FormulaR1C1 = "=RC[-1]"
>> End Sub
>>
>> o incluso a esto:
>>
>> Sub Macro1()
>> [B2:B10] = "=RC[-1]"
>> End Sub
>>
>> o si se prefiere trabajar con la notacion A1 en vez de la RC, se puede hacer lo siguiente:
>>
>> Sub Macro1()
>> Range("B2").Formula = "¡"
>> Range("B2").AutoFill Range("B2:B10")
>> End Sub
>>
>> o bien
>>
>> Sub Macro1()
>> [B2] = "¡"
>> [B2].AutoFill [B2:B10]
>> End Sub
>>
>> Saludos,
>> KL
>>
>>
>> "Abraham" wrote in message news:
>> > Supongo que te refieres a VBA. No probaste con la grabadora de macros?
>> > Lo digo, pues is no sabes usar el VBA te va a ser de mucha ayuda. Por
>> > ejm, este pone en B1 esto:
>> >
>> > ¡
>> >
>> > Y luego lo copia de B2 a B10. Lo hice todo con la grabdora
>> >
>> > Sub Macro1()
>> > '
>> > ' Macro1 Macro
>> > ' Macro grabada el 11/08/2006 por .
>> > '
>> >
>> > '
>> > ActiveCell.FormulaR1C1 = "=RC[-1]"
>> > Range("B1").Select
>> > Selection.Copy
>> > Range("B2:B10").Select
>> > ActiveSheet.Paste
>> > Application.CutCopyMode = False
>> > End Sub
>> >
>> > Abraham
>> >
>
Respuesta Responder a este mensaje
#7 Carlos
13/08/2006 - 13:43 | Informe spam
Gracias...
Ha salido todo muy bien..!!!

(PD). Habrá alguna manera cambiar la manera de ver las referencias RC? en la
linea de comando, por ejemplo: Cells(.UsedRange.Rows.Count +
.UsedRange.Row - 1, col))


"KL" escribió en el mensaje
news:%
Hola Carlos,

Suponiendo que los codigos de proveedor estan en la columna [A] y empiezan


a partir de la fila [2], prueba el siguiente codigo:

Sub test()
Dim col As String, rng As Range
col = "A"
With ActiveSheet
Set rng = .Range(.Cells(2, col), _
.Cells(.UsedRange.Rows.Count + .UsedRange.Row - 1, col))
End With
With rng
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
End Sub

Saludos,
KL


"Carlos" wrote in message


news:
Hola KL...

Se me ha presentado otro problemilla..

Estoy manejando listados de pagos a proveerdores en dos monedas..

El listado al pasarlo a excel.. deja celdas en blanco (para el mismo
proveedor)

Debo copiar en esas celdas en blanco, el código del proveedor (celda
precedente).

Cómo le hago?


Selection.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeBlanks).Select




________________

KL ha escrito:

> Hola Carlos,
>
> La formula debe estar en ingles y las comillas deben rodearse de


comillas. Ademas, he tenido que romper la cadena de texto que
> representa a la formula para evitar problemas de formato de parrafos al


enviarla por Internet:
>
> Sub test1()
> Range("E6").Formula = _
> "=IF(ISERROR(IF(RIGHT(D6)= "" - "",-VALUE(SUBSTITUTE(D6,"" -


"","""")),D6))" & _
> ","""",IF(RIGHT(D6)= "" - "",-VALUE(SUBSTITUTE(D6,"" -


"","""")),D6))"
> End Sub
>
> La otra opcion (no muy recomendable por razones de compatibilidad) es


usar la propiedad FormulaLocal:
>
> Sub test2()
> Range("E6").FormulaLocal = _
> "=SI(ESERROR(SI(DERECHA(D6)= "" - "";-VALOR(SUSTITUIR(D6;"" -


"";""""));D6))" & _
> ";"""";SI(DERECHA(D6)= "" - "";-VALOR(SUSTITUIR(D6;"" -


"";""""));D6))"
> End Sub
>
> Por cierto, creo que la funcion VALOR (o VALUE en ingles) sobra en la


formula.
>
> Saludos,
> KL
>
>
> "Carlos" wrote in message


news:
> > Hola KL... ira lo que quisiera insertar...
> >
> > Range("E6").Formula = "=SI(ESERROR(SI(DERECHA(D6)= " -
> > ";-VALOR(SUSTITUIR(D6;" - ";""));D6));"";SI(DERECHA(D6)= " -
> > ";-VALOR(SUSTITUIR(D6;" - ";""));D6))"
> >
> > Pero se detiene con un error...
> >
> > Agradecido de antemano
> >
> >
> > KL ha escrito:
> >
> >> Hola chicos,
> >>
> >> El codigo ofrecido por Abraham se puede reducir a lo siguiente:
> >>
> >> Sub Macro1()
> >> Range("B2:B10").FormulaR1C1 = "=RC[-1]"
> >> End Sub
> >>
> >> o incluso a esto:
> >>
> >> Sub Macro1()
> >> [B2:B10] = "=RC[-1]"
> >> End Sub
> >>
> >> o si se prefiere trabajar con la notacion A1 en vez de la RC, se


puede hacer lo siguiente:
> >>
> >> Sub Macro1()
> >> Range("B2").Formula = "¡"
> >> Range("B2").AutoFill Range("B2:B10")
> >> End Sub
> >>
> >> o bien
> >>
> >> Sub Macro1()
> >> [B2] = "¡"
> >> [B2].AutoFill [B2:B10]
> >> End Sub
> >>
> >> Saludos,
> >> KL
> >>
> >>
> >> "Abraham" wrote in message


news:
> >> > Supongo que te refieres a VBA. No probaste con la grabadora de


macros?
> >> > Lo digo, pues is no sabes usar el VBA te va a ser de mucha ayuda.


Por
> >> > ejm, este pone en B1 esto:
> >> >
> >> > ¡
> >> >
> >> > Y luego lo copia de B2 a B10. Lo hice todo con la grabdora
> >> >
> >> > Sub Macro1()
> >> > '
> >> > ' Macro1 Macro
> >> > ' Macro grabada el 11/08/2006 por .
> >> > '
> >> >
> >> > '
> >> > ActiveCell.FormulaR1C1 = "=RC[-1]"
> >> > Range("B1").Select
> >> > Selection.Copy
> >> > Range("B2:B10").Select
> >> > ActiveSheet.Paste
> >> > Application.CutCopyMode = False
> >> > End Sub
> >> >
> >> > Abraham
> >> >
> >

Respuesta Responder a este mensaje
#8 KL
13/08/2006 - 14:02 | Informe spam
Hola Carlos,

(PD). Habrá alguna manera cambiar la manera de ver las referencias RC? en la
linea de comando, por ejemplo: Cells(.UsedRange.Rows.Count +
.UsedRange.Row - 1, col))



La verdad es que no entiendo lo que quieres decir con eso. ?Puedes explicarlo con mas detalle y ejemplos por favor?

Saludos,
KL
Respuesta Responder a este mensaje
#9 Carlos
13/08/2006 - 20:13 | Informe spam
es decir...
En excel puedes alternar ver la cuadricula en dos estilos de referencia:
filas y columnas (R1C-2) o A1.B2.

En el manejador de VB puedes alternar esto tambien?


"KL" escribio en el mensaje
news:
Hola Carlos,

> (PD). Habrá alguna manera cambiar la manera de ver las referencias RC?


en la
> linea de comando, por ejemplo: Cells(.UsedRange.Rows.Count +
> .UsedRange.Row - 1, col))

La verdad es que no entiendo lo que quieres decir con eso. ?Puedes


explicarlo con mas detalle y ejemplos por favor?

Saludos,
KL

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida