Sumar letras para código con variable

Lo que estoy intentando hacer es que un rango ("A1") la letra sea la variable, y vaya sumando a ("B1"), ("C1") y así sucesivamente, ¿cómo podría hacer?

1

1 respuesta

Respuesta
1

H o l a:

Podrías explicar con un ejemplo qué es lo que tienes en las celdas y qué es lo que esperas de resultado, pon imágenes para ilustrar el ejemplo. ¿Supongo qué por "código" te refieres a que lo quieres con VBA?

Claro, viste que para hacer referencia a una celda tienes ("A1") o (1,1), lo que quiero es que la "A" sea variable, entonces quiero que pueda ir cambiando las letras en sentido del abecedario, ejemplo A, B, C entendés, que vaya cambiando a la letra que le sigue, para poder poner como variable.

Sigo sin entender.

¿Lo quieres en una fórmula?

¿O estás hablando de una macro?

¿Podrías explicarlo con ejemplos reales?

Claro en una macro, porque agrego una formula en cada celda, pero si pongo la formula fija, todas las celdas van a hacer referencia a la misma celda, por eso quiero que sea variable, para que vaya cambiando, basicamente quiero saber si se puede sumar una letra, que sea A despues B despues C  y asi, sumar la letra

Sí se puede, te pongo un par de ejemplos para obtener la letra en base a un número.

Ejemplo 1:

Sub ejemplo1()
    'obtener la letra de un número de columna
    num = 5
    letra = Left(Columns(num). Address(False, False), InStr(1, Columns(num). Address(False, False), ":") - 1)
End Sub

Ejemplo 2:

Sub ejemplo2()
    'obtener la letra de un número de columna
    num = 5
    letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & num & ",4),""1"","""")")
End Sub

En ambos ejemplos el resultado es la letra "E". Lo único que tienes que hacer es cambiar el num = 5 por el número de columna de la que quieras obtener la letra.


Ahora, lo anterior responde a tu pregunta para obtener la letra de la columna en base a un número, es decir, si en la macro a la variable num le incrementas un 1, obtendrás la siguiente letra por ejemplo, en el siguiente ciclo, del 1 al 10, obtendrás las letras de la A a la J.

Sub ejemplo3()
    'obtener la letra de un número de columna
    For i = 1 To 10
        letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & i & ",4),""1"","""")")
    Next
End Sub

Pero no creo que eso te ayude a realizar la macro que necesitas, o por lo menos se hará más complicada, por qué no mejor me explicas qué fórmula quieres, supongo que vas a hacer una fórmula y con la macro quieres replicarla hacia otras columnas.


':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Claro, la fórmula es =si(D1<HOY();"hola";"hola"), esta es la formula que estoy usando, que cuando "D1" que es una fecha ya haya pasado, osea que sea menor que HOY entonces que aparezca hola (es un ejemplo), lo que quiero es ir agregando a las columnas desde la "D" hasta la "O", por eso quiero ir cambiando la formula, ya que siempre va a estar en la primera fila, y solo se hace variable la columna, que en este caso es la letra.

Por eso quería ir sumando la letra, pero si tienes una forma más practica, bienvenido sea.

Necesito que pongas ejemplos reales, fue lo que te pedí desde un principio:

"

¿Podrías explicarlo con ejemplos reales?

"

En verdad tu fórmula que pusiste no ayuda con la explicación

Si tienes esto:

"

=si(D1<HOY();"hola";"hola")

"

Si D1 es menor a hoy( ) que ponga la palabra "hola", de lo contrario que también ponga la palabra "hola". Para eso no necesitas una fórmula, siempre te va a poner la palabra "hola", entonces simplemente pon ="hola".


Si pudieras poner una imagen de un ejemplo real de lo que tienes en D1.

¿Qué tienes en D1?

¿En dónde vas a poner la primer fórmula?

¿Qué tienes en E1?

¿En dónde vas a poner la segunda fórmula?

Todo podría aclarase si pones un ejemplo real con una imagen.

Ayúdame a ayudarte, si me das más información real te podría ayudar con la macro.


no es un ejemplo no más, mira la fórmula empezaría en la columna DE y la fila la ultima disponible, entonces si "D1" es menor a "HOY" va a poner "hola", si es mayor va a poner "chau" son ejemplos de lo que va a poner, simplemente la fórmula es la misma, ya que en la columna "E" iría, si "E1" es menor a "HOY" entonces pone "hola" sino va "chau" y así sucesivamente, ¿en la columna "F" iría "=si(F1<HOY();hola;chau)" se entiende? El hola y chau son ejemplos que voy a rellenar después, la fórmula tiene que ir corriéndose hacia el costado variando la letra en sentido del abecedario, para que la macro pueda ir colocando la fórmula sin inconvenientes.

En la columna "D1:O1" están los meses de "Enero-Diciembre" por eso necesito que haga referencia a esas columnas, ya que la fórmula tiene que lanzarse cuando hayan pasado esos meses, por eso dice "D1<HOY()" ya que "D1" en este caso seria enero, ya paso enero, entonces deberia lanzarse la formula, pero eso se hace en una lista de muchos datos, en donde todo el tiempo estoy agregando datos nuevamente, y necesito que la formula se vaya colocando sin tener que copiar y pegar, que es como lo tengo ahora.

Sigo sin entender cómo está tu fórmula.

Envíame tu archivo con las fórmulas que tienes actualmente.

Recuerda poner tu nombre de usuario en el asunto.

Prueba con la siguiente macro.

Lo que hace es ponerte la fórmula =SI(D$1<HOY(); "hola"; "chau") en primera fila vacía después de los datos.

Sub Macro7()
'Por.Dante Amor
    fila = Range("D" & Rows.Count).End(xlUp).Row + 1
    Range("D" & fila & ":O" & fila).Formula = "=IF(R1C<TODAY(), ""hola"", ""chau"")"
End Sub

Prueba y me comentas. Si es lo que necesitas, no olvides cambiar la valoración de la respuesta.

Sal u dos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas