![MS Excel 2016 - subtrair letra da coluna](https://rvso.com/image/1615272/MS%20Excel%202016%20-%20subtrair%20letra%20da%20coluna.png)
Eu tenho a fórmula atual abaixo na célula A1, onde preciso menos/subtrair a letra da coluna em uma nova célula B1. Eu li este post, mas não consegui trabalhar: Como adicionar, subtrair ou incrementar letras de colunas no Excel?
por exemplo, precisa de fórmula ou macro para criar valores da Coluna B; que são iguais à coluna A, mas subtraem/menos uma letra da coluna
Column A | Column B
=+Jan!$V$36 | =+Jan!$U$36
=+Jan!$AD$36 | =+Jan!$AC$36
=+Jan!$AH$36 | =+Jan!$AG$36
Responder1
O valor +
em suas fórmulas é supérfluo e desnecessário.
Aqui está uma UDF que colocará a fórmula alterada na coluna adjacente
Premissas:
- suas fórmulas são simples como você mostra, com apenas uma referência de célula
- A referência da célula estará sempre no final da fórmula.
- A referência de célula sempre utilizará o modo de endereçamento absoluto.
- Para tornar as coisas mais simples
- Usamos a notação R1C1 em VBA
- Procuramos no final da string ao contrário pelo
C
- Isso nos dá o número da coluna, da qual subtraímos
1
para obter a fórmula modificada.
Isso deve fornecer informações suficientes para que você possa alterá-las caso os dados postados não estejam de acordo com seus dados reais.
*observe que quando o escrevemos de volta na planilha, ele será convertido novamente em A1
notação.
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