![MS Excel 2016 - 減去列字母](https://rvso.com/image/1615272/MS%20Excel%202016%20-%20%E6%B8%9B%E5%8E%BB%E5%88%97%E5%AD%97%E6%AF%8D.png)
我在儲存格 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