简体   繁体   中英

Stack different cells in one column

I just started learning VBA but I can't really figure this out thing out. I have a column with both positive and negative integers and what I want to do is to take the values that are positive and put them in a new column, and do the same for the negative values. I tried making an if-statement but I only know how to shift their spots horizontally, so if I have a positive value in row 1,5,7,22 and 24 they'll appear in these rows in the next column instead of being in row 1,2,3,4 and 5. I did that like this:

For i = 0 To NoofOb 
    If Range("D3").Offset(i + 1) > 0 Then
        Range("G3").Offset(i) = Range("D3").Offset(i + 1)

    ElseIf Range("D3").Offset(i + 1) < 0 Then
        Range("J3").Offset(i) = Range("D3").Offset(i + 1)
    End If
Next i

Could someone give me a hint or anything? I've been looking at this for hours and can't find an answer. Thanks in advance!

Try this:

j = 1
k = 1

For i = 3 To NoofOb 
    If Range("D" & i).Value > 0 Then
        Range("G" & j).Value = Range("D" & i).Value
        j = j + 1
    ElseIf Range("D" & i).Value < 0 Then
        Range("J" & k).Value = Range("D" & i).Value
        k = k + 1
    End If
Next i

note: I did not test this code and you may need to adjust the starting points of each column ( i , j and k ) to suit your needs

Another option, assuming columns G and J are empty before starting the macro

For i = 3 To NoofOb 
    With Range("D" & i) ‘ reference column D current i row 
        Select Case .Value2 ‘check referenced range value and sct accordingly 
            Case Is > 0 ‘ if it’s positive
                Range("G" & Worksheetfunction.Count(Range("G:G")) + 1.Value2 = .Value2 ‘ fill column G next empty row 
            Case Is < 0 ‘ if it’s negative 
                Range("J" & Worksheetfunction.Count(Range("J:J")) + 1.Value2 = .Value2 ‘ fill column J next empty row 
        End Select
    End With
Next

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM