【问题标题】:Find a Text Value, Offset, Enter Formula based on OffSet Values根据 OffSet 值查找文本值、偏移量、输入公式
【发布时间】:2020-04-21 20:01:29
【问题描述】:

我还有另一个 VBA 问题。

  1. 我在 Excel 中有一个表格,我想查找文本:“所有其他”将始终位于 B 列中,但可能不在同一行 #。

  2. 找到“所有其他”单元格后,我想在 (0,1) 的下一列中输入求和公式。

  3. 该公式将从 Activecell 向下 3 行到数据末尾的未知范围求和。

我收到一个错误:无效或不合格的参考。

PrintScreen

我目前有:

Dim ws As Worksheet
Dim aOther As Range
Dim DataLastRow As Range

Set ws = ActiveSheet

Set DataLastRow = ws.Cells.Range(ws.Rows.Count, 1).End(xlUp).Rows

    Set aOther = ws.Range("B:B").Find("All Other", LookIn:=xlValues, lookat:=xlWhole)
    ActiveCell.Offset(0, 1).Formula = "=SUM(" & .Offset(3, 0) & DataLastRow & ")"

【问题讨论】:

  • aOther.Offset(0, 1).Formula = "=SUM(" & aOther.Offset(3, 0).Address & ":" & ws.cells(DataLastRow,3).Address & ")"
  • @ScottCraner - DataLastRow 是一个范围......所以是的......
  • @BigBen 我错过了:aOther.Offset(0, 1).Formula = "=SUM(" & aOther.Offset(3, 0).Address & ":" & DataLastRow.Address & ")" 并删除了Set DataLastRow 行上的.Rows
  • 那么您必须将其更改为 C 列右侧(DataLastRow 在 A 中)?
  • @BigBen 是的:Set DataLastRow = ws.Cells.Range(ws.Rows.Count, 3).End(xlUp)

标签: excel vba


【解决方案1】:
Dim ws As Worksheet
Dim aOther As Range
Dim DataLastRow As Long

Set ws = ActiveSheet

DataLastRow = ws.Cells(ws.Rows.Count, 3).End(xlUp).Row

    Set aOther = ws.Range("B:B").Find("All Other", LookIn:=xlValues, lookat:=xlWhole)

    If Not aOther is Nothing Then
        aOther.Offset(0, 1).Formula = "=SUM(" & aOther.Offset(3, 1).Address & ":" & ws.Cells(DataLastRow,3).Address & ")"
    Else
        MsgBox """All Other"" not found in column."
    End If

【讨论】:

  • 非常感谢您的帮助!!我确实有几个问题。我是 VBA 的新手,通过 Google 和 Trial by Fire 学习。 ? 1)我只需要查找“所有其他”一次,因为它总是在 B 列中。如何在没有循环的情况下执行此操作?
  • 2) 我将DataLastRow 设置为引用A 列,因为表中A 列的末尾总会有数据。 C 列不一定有数据到最后。 (我这样做是因为下一步是将公式复制到 D、E、G、H、I、J 和 L 列 Offset – 0 Rows)。
  • 3) 出于学习目的:为什么我可以将.Range.Rows 放在Set DataLastRow 上?我不需要引用表格范围吗?
  • 1.代码中没有循环。 2.我将代码修复为现在查看 A 列。 3 Cells() 是一个范围对象,如果引用整个工作表上的位置,则不需要 RangeRange("C1:D5").Cells(1,1) 指的是 Range ("C1"),没有 Range(address) 它指的是整个工作表。 Rows 指给定范围内的所有行,您试图在其中返回 Row 这是 Long 而不是 Range
  • 非常感谢!您能否告诉我如何从未知的活动单元格中复制公式并将其粘贴到相邻的 D、E、G、H、I、J 和 L 列 Offset – 0 Rows
猜你喜欢
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 1970-01-01
相关资源
最近更新 更多