将公式的一部分转换为相对参考的绝对参考

首先,如果这是一个愚蠢的问题,我会道歉,但我只是无法在网上find答案。 我有一个问题,问任何谁熟悉使用vba将相关公式更改为绝对公式。

我现在的问题是,我的绝对公式是通过计算其他列(C列)的不同单元格条件的行差异来确定的,因为我使用vbainput了跨列(列B)的多个公式。 因此,我想达到的绝对公式是不可预测的,而且是不断变化的。

Set Rng = Range(Cells(2, 3), Cells(lastrow, 3)) Range("B2").Select startb = lastrow For b = lastrow To 2 Step -1 If Cells(b, 3) <> Cells(b - 1, 3) Then endb = b rowdiff = startb - endb Cells(end, 2).Select ActiveCell.FormulaR1C1 = "=Countif(RC[-1]:R[" & rowdiff & "]C[-1],RC[-1])" ActiveCell.Formula = Application.ConvertFormula(Formula:=ActiveCell.Formula, fromreferencestyle:=Application.ReferenceStyle, toabsolute:=xlAbsolute) Selection.Copy Range(Cells(startb, 2), Cells(endb, 2)).Select ActiveSheet.Paste Application.CutCopyMode = False End If Next b 

正如你们可以看到我有一个代码行,可以直接将相对公式转换为绝对公式。 不幸的是,在我的COUNTIF公式中,我想要一个绝对范围(逗号前的部分),但是需要一个相对的标准(在这个例子中是逗号后面的RC [-1])。

有什么我可以做的只是将部分公式转换成绝对的? 还是没有这样的事情? 任何帮助和build议,不胜感激。 请让我知道,如果我是完全错误的做法。

感谢您阅读和您的时间。

至于除了最后一个单元格引用之外,将公式从相对部分转换为绝对部分的重点,您可以使用此函数

 Function LeaveLastRelative(strng As String) As String LeaveLastRelative = Left(strng, InStrRev(strng, ",")) & Replace(Right(strng, Len(strng) - InStrRev(strng, ",")), "$", "") End Function 

其更详细和(可能)清晰的版本是:

 Function LeaveLastRelative(strng As String) As String Dim strng1 As String, strng2 As String strng2 = Right(strng, Len(strng) - InStrRev(strng, ",")) strng1 = Left(strng, InStrRev(strng, ",")) LeaveLastRelative = strng1 & Replace(strng2, "$", "") End Function 

被用作:

  ActiveCell.FormulaR1C1 = "=Countif(RC[-1]:R[" & rowdiff & "]C[-1],RC[-1])" ActiveCell.formula = Application.ConvertFormula(formula:=ActiveCell.formula, fromreferencestyle:=Application.ReferenceStyle, toabsolute:=xlAbsolute) ActiveCell.formula = LeaveLastRelative(ActiveCell.formula) '<--| here you use the function