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

在此处输入图片描述

相关内容