【问题标题】:Subtract from cell reference从单元格引用中减去
【发布时间】:2020-12-14 12:55:55
【问题描述】:

我只需要一种从单元格引用中删除两个的方法(即将 =Y36 更改为 =Y34)这需要在列末尾之前的两个单元格上完成,我最接近它的是

Sub Update_Reference()

     Dim myCell  As Range

    Range("A" & Rows.Count).End(xlUp).Offset(-2).Resize(2).Select
    For Each myCell In Selection
        If myCell.HasFormula Then myCell.Formula = Left(myCell.Formula, _
                                                Len(myCell.Formula) - 1) & 4
    Next myCell
 
End Sub

但这似乎只管用;它似乎所做的只是将相同的公式复制到每个额外的单元格

【问题讨论】:

  • “但这似乎只管用” ...不要让我们悬念。
  • 代码类的作品。如果我将公式放在 A1A14 中,代码会更改 A12A13。它将公式中的最后一个字符替换为字符 4。这不是你想要的吗??
  • 注意:用4替换字符与从数字中减去2不同。
  • 我只是想在单元格中获取引用并减少两个。每次需要时引用都会更改,因此不符合我的目标。

标签: excel vba reference


【解决方案1】:

试试这个:

Sub Update_Reference()

     Dim myCell  As Range, s As String, i As Long, N As Long
     Dim FirstPart As String

    Range("A" & Rows.Count).End(xlUp).Offset(-2).Resize(2).Select
    
    For Each myCell In Selection
        If myCell.HasFormula Then
            s = myCell.Formula
            For i = Len(s) To 1 Step -1
                If IsNumeric(Mid(s, i, 1)) Then
                '
                Else
                    Exit For
                End If
            Next i
            
            FirstPart = Mid(s, 1, i)
            N = Mid(s, i + 1) - 2
            myCell.Formula = FirstPart & N
        End If
    Next myCell
 
End Sub

注意事项:

代码将公式分成两部分;公式末尾的数字部分 (N) 和其他所有内容 (FirstPart) 。它从数字部分中减去 2 并将公式重新组合在一起。

【讨论】:

  • 查看该公式可以看出这是多么超出我对 VBA 的了解。感谢你的协助;确实有效
  • @Hebert 我添加了 注意事项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多