I am new to VBA, but pretty good with PHP. That being said, I'm struggling with VBA loops...
I have this sheet with 40 rows called "SH1":
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
I need to loop through 40 rows and check the value in column A. If the value in column A meets my criteria (see below), generate some output and put it in another sheet.
My output sheet is 3-columns and called "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
My criteria for deciding what goes where:
// 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 ...
Then:
// 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 ...
PROGRESS EDIT:
Seems to be working, but wondering if there is a "cleaner" way?
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
Dim cell As Range
For Each cell In Range("a1:a40")
'do stuff here
Next cell
You can get your current row with cell.Row
. Good luck ^_^
How about:
Sub Catchers()
Dim cell As Range
Sheet1.Select 'SHEET: C
For Each cell In Range("C3:C40")
If cell.Value < 35 And cell.Value > 0 Then
With Sheet6
.Range("B" & cell.Row) = cell.Offset(0, 5) _
& "." & cell.Offset(0, 6)
.Range("C" & cell.Row) = cell.Offset(0, -2) _
& ", " & cell.Offset(0, -1) _
& " " & cell.Offset(0, 7)
.Range("D" & cell.Row) = cell.Offset(0, 9) _
& " " & cell.Offset(0, 2) _
& " " & cell.Offset(0, 11) _
& " " & cell.Offset(0, 10)
End With
End If
Next cell
Sheet6.Range("B4:D4").Rows.AutoFit
Sheet6.Range("B4:D4").Columns.AutoFit
End Sub
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With