search一个表中的值的数量,调整另一个表中的行数

我试图search“商品”出现在表列中的次数:证券[策略]。 然后,我想要采取这个数字,并在另一个工作表上相应地调整一个表(名为:商品)。 如果在证券[策略]栏中出现6次,那么商品表应调整为6行,以此类推。

我对VBA很新。 当我运行下面的代码时,没有任何反应。

Sub AdjRow() Dim Count1 As Integer Count1 = Application.WorksheetFunction.CountIf(Range("Securities[Strategy]"), "Commodity") Count1 = Count1 + 12 ActiveSheet.ListObjects("Commodity").Resize Range("$A$12:$J$" & Count1) End Sub 

为了帮助您进行debugging,您可以使用Debug.Print将键值打印到即时窗口,也可以使用MsgBox将消息框打印到消息MsgBox 。 在这种情况下,我很好奇当你试图运行这个macros的时候是否有错误信息。 编辑你的代码并试图运行它,当从CountIf得到的结果大于1时运行正常,但是当它是一个或者更less的时候,会中止一个错误。 如果您尝试resize的表没有标题,我假定如果CountIf大于零,macros将正常运行。

以下是试图debugging代码时的代码,示例数据和输出。 我运行了3次代码,并且从CountIf函数返回了CountIf和2的CountIf 。 请注意我在第二次运行时没有得到listobject的第三个地址,这是因为代码在试图将ListObject设置为只有它的头( A2:J2 )时中止了。

 Option Explicit Sub AdjRow() Dim r As Range Dim i As Long Dim lo As ListObject Set r = Sheet2.Range("Securities[Strategy]") i = Application.WorksheetFunction.CountIf(r, "Test1") i = i + 1 Set lo = Sheet1.ListObjects("Commodity") Debug.Print i Debug.Print r.Address Debug.Print lo.Range.Address lo.Resize Range("$A$2:$J$" & i) Debug.Print lo.Range.Address End Sub 

工作表Sheet1

在这里输入图像描述

Sheet2中

在这里输入图像说明

输出到即时窗口

9
$ A $ 2:$ A $ 10
$ A $ 2:$ $Ĵ9
$ A $ 2:$ $Ĵ9
2
$ A $ 2:$ A $ 10
$ A $ 2:$ $Ĵ9
3
$ A $ 2:$港币$ 88
$ A $ 2:$ $Ĵ9
$ A $ 2:$ $Ĵ3