在工作表中,我尝试在Excel宏中创建以下逻辑。
逻辑:
Dub Test()
Dim rws as integer
Dim counter as integer
rws = 6
counter = 2
Do while rws <> 0
IF 'Data Sheet with Space'!J`counter` = "Sample Data Row 1 Col 10" Then
WorkSheet!A`counter` = 'Data Sheet with Space'!A`counter`
end IF
counter = counter + 1
rws = rws - 1
Excel表格是:
Data Sheet with Space
---------------------------------------------
Header 1 Header 2 Header 3 Header 4 Header 5 Header 6 Header 7 Header 8 Header 9 Header 10
Sample Data Row 1 Col 1 Sample Data Row 1 Col 2 Sample Data Row 1 Col 3 Sample Data Row 1 Col 4 Sample Data Row 1 Col 5 Sample Data Row 1 Col 6 Sample Data Row 1 Col 7 Sample Data Row 1 Col 8 Sample Data Row 1 Col 9 Sample Data Row 1 Col 10
Sample Data Row 2 Col 1 Sample Data Row 2 Col 2 Sample Data Row 2 Col 3 Sample Data Row 2 Col 4 Sample Data Row 2 Col 5 Sample Data Row 2 Col 6 Sample Data Row 2 Col 7 Sample Data Row 2 Col 8 Sample Data Row 2 Col 9 Sample Data Row 2 Col 10
Sample Data Row 3 Col 1 Sample Data Row 3 Col 2 Sample Data Row 3 Col 3 Sample Data Row 3 Col 4 Sample Data Row 3 Col 5 Sample Data Row 3 Col 6 Sample Data Row 3 Col 7 Sample Data Row 3 Col 8 Sample Data Row 3 Col 9 Sample Data Row 3 Col 10
Sample Data Row 4 Col 1 Sample Data Row 4 Col 2 Sample Data Row 4 Col 3 Sample Data Row 4 Col 4 Sample Data Row 4 Col 5 Sample Data Row 4 Col 6 Sample Data Row 4 Col 7 Sample Data Row 4 Col 8 Sample Data Row 4 Col 9 Sample Data Row 4 Col 10
Sample Data Row 5 Col 1 Sample Data Row 5 Col 2 Sample Data Row 5 Col 3 Sample Data Row 5 Col 4 Sample Data Row 5 Col 5 Sample Data Row 5 Col 6 Sample Data Row 5 Col 7 Sample Data Row 5 Col 8 Sample Data Row 5 Col 9 Sample Data Row 5 Col 10
---------------------------------------------
和另一个名为WorkSheet
尝试运行宏时出现错误,'
名称中的Data Sheet with Space
会导致错误。
其次,我在尝试使用counter
变量动态更改输入和输出单元格数时出错。
任何帮助都是值得欣赏的。
答案 0 :(得分:2)
问题在于你解决细胞的方式。
如果你想参考电池&#34; B6&#34;在第一张纸上,基本上有三种方式可以参考纸张:
按CodeName(如果您碰巧知道工作表的代号)
Sheet1.[B6]
按名称(这是您在工作表标签上看到的名称)
Sheets("Data Sheet with Space").[B6]
按编号(如果您碰巧知道工作表的顺序)
Sheets(1).[B6]
这是你的代码,你要维护它,所以使用最适合你的方式。
您可能更喜欢使用变量wsData = Sheets("Data Sheet with Space")
,因此您只需编写wsOther.[A1]=wsData.[B6]
。
还有几种方法可以参考纸张上的单元格。一些有用的:
直接使用地址:
Sheets("Data Sheet with Space").[B6]
使用.Range
(使用地址)
Sheets("Data Sheet with Space").Range("B6")
使用.Cell
(使用坐标)
Sheets("Data Sheet with Space").Cells(6, 2)
使用.Cell
的更可重复的方法(由YowE3K提供)
Sheets("Data Sheet with Space").Cells(6, "B")
在您的代码中,您已经在使用坐标。所以您可能更喜欢使用.Cells(rws, counter)
。但这取决于你。
答案 1 :(得分:0)
错误来自您的代码中的错误。 (这里已经很容易看到灰色)。如果我正确理解了您的代码,那么您应该通过输入实际工作表和范围来更正它(未经测试):
Sub Test2()
Dim rws As Integer
Dim counter As Integer
rws = 6
counter = 2
Do While rws <> 0
If Sheets("Data Sheet with Space").Range("J" & counter).Value = Cells(1, 10).Value Then
Sheets("WorkSheet").Range("A" & counter).Value = Sheets("Data Sheet with Space").Range("A" & counter).Value
End If
counter = counter + 1
rws = rws - 1
Loop
End Sub