希望这是一个相当容易的过程。
我有一个Excel文件,该文件的开头有一个“摘要”标签,然后是几个包含每周信息的标签。随着星期的进展,我可能会在每周工作表中添加其他行,这意味着总数不一定总是位于每张工作表的同一单元格中。
我正在寻找一个公式,该公式将在指定的每周工作表中搜索“总计”一词并返回其地址,然后我可以将其构建为其他公式,以便“摘要”工作表将填充正确的值,而不管是否已添加其他行。
答案 0 :(得分:0)
嗨,您的问题应该始终包含您当前的工作,并且理想情况下还应该包含一些代码。但是鉴于这是一个相当基本的问题,而且您是新手,所以我决定回答
放在一边……:
Option Explicit
Private Function get_total () As Range
Dim ws As Worksheet: Set ws = Sheets("Your Sheet Name") 'set your own
Dim lc as Long
lc = ws.Cells(1, Columns.Count).End(xlToLeft).Column
' determines last column with data
'some other useful variables
Dim lr as Long 'last row
Dim temp as Range 'find result
Dim i as Long ' loop index
For i = 1 to lc
lr = ws.Cells(Rows.Count, i).End(xlUp).Row
Set temp = ws.Range(Cells(1, i), Cells(lr, i)).Find("Grand Total", lookin:=xlValues)
If Not temp Is Nothing Then 'if we found grand total, return it
Set get_total = temp 'return range of result
End If
Next i
Exit Function 'if no Range found, exit function ("return;")
End Function
从技术上讲,这就是答案,但对于实际使用,您可能希望将其可视化
因此,使用此功能,您将遍历所有列,并在找到总计时停止,否则,如果没有找到“ return
”,则将>
很明显,这只是一个函数,因此,如果要打印结果,可以创建如下过程:
Private Sub print_grand_total()
Dim res as Range
Set res = get_total
If Not res Is Nothing Then
MsgBox("Found in Cell[" & res.row & "," & res.Column & "]")
Else
MsgBox("Grand Total not found!")
End If
End Sub
因此,我设置了一个示例表:
运行过程后,它成功返回结果:
注意: 小的实现预见:在第一行为空的情况下(这将无法正确检测到最后一列),此方法将不起作用。根据数据范围的开始位置来编辑
lc
代码