我在单元格 A1 中有下面的当前公式,我需要将列字母减去/减去到新单元格 B1。我已阅读过这篇文章,但无法操作: 如何在 Excel 中添加、减去或增加列字母?
例如,需要公式或宏来创建 B 列值;这些值与 A 列相同,但减去/减去一个列字母
Column A | Column B
=+Jan!$V$36 | =+Jan!$U$36
=+Jan!$AD$36 | =+Jan!$AC$36
=+Jan!$AH$36 | =+Jan!$AG$36
答案1
您的公式中的+
是多余的并且不需要。
这是一个 UDF,它将改变后的公式放在相邻的列中
假设:
- 您的公式非常简单,只需一个单元格引用即可
- 单元格引用始终位于公式的末尾。
- 单元格引用将始终使用绝对寻址模式。
- 让事情变得更简单
- 我们在 VBA 中使用 R1C1 符号
- 我们从字符串末尾反向搜索
C
- 这给了我们列号,我们从中减去它就
1
可以得到修改后的公式。
这应该为您提供足够的信息,以便在您发布的数据与真实数据不一致时您可以进行更改。
*请注意,当我们将其写回工作表时,它将被转换回A1
符号。
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