簡體   English   中英

將不同的電池堆疊在一列中

[英]Stack different cells in one column

我剛剛開始學習VBA,但我真的無法弄清楚。 我有一列同時包含正整數和負整數,我想做的是將正值取到新的列中,並對負值做同樣的事情。 我嘗試過執行if語句,但是我只知道如何水平移動它們的位置,因此,如果我在行1、5、7、22和24中具有正值,它們將出現在下一行的這些行中,而不是在第1,2,3,4和5行中,我這樣做是這樣的:

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

有人可以給我一個提示嗎? 我已經看了幾個小時了,找不到答案。 提前致謝!

嘗試這個:

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

注意:我沒有測試此代碼,您可能需要調整每列的起點( ijk )以適合您的需求

另一種選擇,假設在啟動宏之前G和J列為空

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM