根据 OffSet 值查找文本值、偏移量、输入公式
Posted
技术标签:
【中文标题】根据 OffSet 值查找文本值、偏移量、输入公式【英文标题】:Find a Text Value, Offset, Enter Formula based on OffSet Values 【发布时间】:2020-04-21 20:01:29 【问题描述】:我还有另一个 VBA 问题。
我在 Excel 中有一个表格,我想查找文本:“所有其他”将始终位于 B 列中,但可能不在同一行 #。
找到“所有其他”单元格后,我想在 (0,1) 的下一列中输入求和公式。
该公式将从 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)
【参考方案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()
是一个范围对象,如果引用整个工作表上的位置,则不需要 Range
。 Range("C1:D5").Cells(1,1)
指的是 Range ("C1")
,没有 Range(address) 它指的是整个工作表。 Rows
指给定范围内的所有行,您试图在其中返回 Row
这是 Long
而不是 Range
非常感谢!您能否告诉我如何从未知的活动单元格中复制公式并将其粘贴到相邻的 D、E、G、H、I、J 和 L 列 Offset – 0 Rows
?以上是关于根据 OffSet 值查找文本值、偏移量、输入公式的主要内容,如果未能解决你的问题,请参考以下文章
Python习题:给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)。例:输入: str="abcdefg", offset = 3 输出: "efgab