![MS Excel 2016 - restar letra de columna](https://rvso.com/image/1615272/MS%20Excel%202016%20-%20restar%20letra%20de%20columna.png)
Tengo la fórmula actual a continuación en la celda A1 donde necesito restar/menos la letra de la columna en una nueva celda B1. Revisé esta publicación pero no pude resolverla: ¿Cómo sumar, restar o incrementar letras de columnas en Excel?
por ejemplo, necesita una fórmula o macro para crear valores de la columna B; que son iguales a la columna A pero restan/menos una letra de columna
Column A | Column B
=+Jan!$V$36 | =+Jan!$U$36
=+Jan!$AD$36 | =+Jan!$AC$36
=+Jan!$AH$36 | =+Jan!$AG$36
Respuesta1
El contenido +
en sus fórmulas es superfluo y no es necesario.
Aquí hay una UDF que colocará la fórmula modificada en la columna adyacente.
Supuestos:
- sus fórmulas son simples como las muestra con una sola referencia de celda
- La referencia de la celda siempre estará al final de la fórmula.
- La referencia de celda siempre utilizará el modo de direccionamiento absoluto.
- Para hacer las cosas más simples
- Usamos la notación R1C1 en VBA
- Buscamos desde el final de la cadena a la inversa para el
C
- Esto nos da el número de columna, del cual restamos
1
para obtener la fórmula modificada.
Esto debería brindarle suficiente información para que pueda cambiarla en caso de que los datos publicados no coincidan con los datos reales.
*tenga en cuenta que cuando lo volvamos a escribir en la hoja de trabajo, se volverá a convertir a A1
notación.
Option Explicit
Sub prevCol()
Dim R As Range, C As Range
Dim WS As Worksheet
Dim sForm As String
Dim lColPos As Long, lColNum As Long
Set WS = Worksheets("sheet3") 'or wherever you have the formulas
With WS
Set R = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each C In R
If C.HasFormula Then
sForm = C.FormulaR1C1
'assuming column number is at the end
lColPos = InStrRev(sForm, "C")
lColNum = Mid(sForm, lColPos + 1, 9)
C.Offset(0, 1).FormulaR1C1 = Left(sForm, lColPos) & lColNum - 1
End If
Next C
End Sub