MS Excel 2016 - 減去列字母

MS Excel 2016 - 減去列字母

我在儲存格 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

在此輸入影像描述

相關內容