我有一个名为 Shipper VP 的源 Excel 表。Shipper VP 的 B4、C4、D4 单元格中有三个人的姓名,列中有相应的数据。我正在为每个人提取他们的数据,并为每个人创建单独的 Excel 选项卡并将其重命名为各自的名称。另外还有很多其他的计算。这是代码:(一切正常)
Sub Test()
Dim wsSource As Worksheet, ws As Worksheet
Dim rg As Range, c As Range
Dim n As Integer
Set wsSource = Sheets("Shipper VP")
Set rg = wsSource.Range("B4:D4")
n = 1
For Each c In rg
'add sheet and rename
Set ws = Sheets.Add
ws.Name = c.Text
'other calculations
'...
n = n + 1
Next c
End Sub
但是,目前我知道源表(ws.Source)中有三个人,我想为“n”个人循环同样的事情。对于每个人,它从 B4 开始,一直到 C4、D4、E4 等,直到 Source Sheet 中的人数。最后一列是总计,但我只提取上一列的数据,而不是总计列。
现在在上面的代码中,而不是 rg 范围内的 ("B4:D4"),我希望 D4 单元格是一个变量,以便它可以是 Z4 或 AK4 等任何东西。它有三个人,它需要的单元格地址从源表(wsSource)是从B4:D4,如果有10个人,从B4:K4。如果再次有 100 人,它将变为 B4:x4,其中 x 将是源 excel 表 (wsSource) 的第 (100+1) 列。
我无法将此变量传递给以下代码: Set rg = wsSource.Range("B4:D4")
所以,如果源表中有“n”个人(我可能不知道人数)应该怎么办,应该有一个变量检查直到从 B4 开始的单元格值为空,然后在下一个代码它应该自动设置 rg = wsSource.Range(“B4:x4”) 的范围,其中 x 是第 (100+1) 列。
但是在三个人搜索的时候,会在源表(Shipper VP)的F4列而不是E4列得到空值,因为人的名字是从B4到D4,所以多了一个E4 中的总计列。但是在 rg 的范围内,我只想要从 B4 到 D4 而不是直到 E4 列。对源表中的“n”个人也要做同样的事情。
如果 B4 也是一个变量,那么它就像 'y' 之类的要好得多。然后我可以将'y'设置为 B4 作为起始单元格编号。之后,它将从 B4 循环到源工作表(ws.Source)中第 4 行的倒数第二列值,因为第 4 行的最后一列值将是总计。
如果有人可以帮助我,我将不胜感激。
谢谢。问候,蘸