【发布时间】:2011-06-24 19:29:37
【问题描述】:
我是 VBA 的新手,但对 PHP 非常了解。话虽如此,我正在为 VBA 循环而苦苦挣扎……
我有这张名为“SH1”的 40 行工作表:
SH1
A B C D E
1 2 One 1.0a 12
2 7 Two 2.0b 34
3 13 Three 3.0c 56
4 14 Four 4.0d 78
..
40
我需要遍历 40 行并检查 A 列中的值。如果 A 列中的值符合我的条件(见下文),则生成一些输出并将其放在另一张表中。
我的输出表是 3 列,名为“SH2”:
SH2
A B C D E
1 1.0a 12 One
2.0b 34 Two
2 3.0c 56 Three
4.0d 78 Four
..
15
我决定去哪里的标准:
// First loop:
if a1 < 8, put c1 in SH2 a1, put d1 in SH2 b1, put b1 in SH2 c1
if a2 < 8, put c2 in SH2 a1, put d2 in SH2 b1, put b2 in SH2 c1
// ... loop through a40 ...
然后:
// Second loop:
if a1 > 8 AND a1 < 16, put c1 in SH2 a2, put d1 in SH2 b2, put b1 in SH2 c2
if a2 > 8 AND a2 < 16, put c2 in SH2 a2, put d2 in SH2 b2, put b2 in SH2 c2
// ... loop through a40 ...
进度编辑:
似乎可行,但想知道是否有“更清洁”的方式?
Sub CatchersPick2()
Dim curCell As Range
For Each curCell In Sheet4.Range("C3:C40").Cells
If curCell.Value > 0 And curCell.Value < 73 Then
cLeft = cLeft _
& curCell.Offset(0, 5) & "." _
& curCell.Offset(0, 6) & vbLf
cMidl = cMidl _
& curCell.Offset(0, -2) & ", " _
& curCell.Offset(0, -1) & " " _
& curCell.Offset(0, 7) & vbLf
cRght = cRght _
& curCell.Offset(0, 9) & " " _
& curCell.Offset(0, 2) & " " _
& curCell.Offset(0, 11) & " " _
& curCell.Offset(0, 10) & vbLf
End If
Next curCell
Sheet6.Range("B3") = cLeft
Sheet6.Range("C3") = cMidl
Sheet6.Range("D3") = cRght
Sheet6.Range("B3:D3").Rows.AutoFit
Sheet6.Range("B3:D3").Columns.AutoFit
End Sub
【问题讨论】:
-
对不起,但这看起来很乱,似乎与早期的东西不匹配。顺便说一句,您说
if a2 > 8 AND a1 < 16是指a2 > 8 AND a2 < 16(第二个循环,第2 行)。你想做之前的事吗(第一个,第二个lopp)? -
我之前的东西只是一个基于我需要生成的裸输出的示例。我上面的例子是有效的,但是对于 VBA 循环和变量是新手,我确信有一种更清洁的方法(帮助!)。要回答您的问题,“是”,这是一个错字。