首页 > 解决方案 > 将 pos,neg 值替换到另一张纸上

问题描述

截图#1

所以我必须替换“A”列中的正数和负数,从表“1”到表第二[正]和第三表[负]。

这是我尝试过的:

Sub Verify()
    Dim row As Long
    For row = 1 To 20
        If ActiveSheet.Cells(row,1) <> "" Then 
            If ActiveSheet.Cells(row,1) > 0 Then 
                ActiveSheet.Cells(row,2) = ActiveSheet.Cells(row,1)
            End If
        End If
    Next
End Sub

这是该程序的作用: 屏幕截图#2 因此,正如我们所见,我在“B”表第 1 列中获得了正值。

标签: excelvba

解决方案


使代码对您来说有点可重用。随意更改工作表名称或 last_row 变量。使用了 last_pos_val 和 last_neg_val,因此第二张和第三张纸上不会有空行。您没有指定如何处理零,因此它当前已添加到负片中。

Sub Verify()
    Dim row As Long, last_row As Long, last_pos_val As Long, last_neg_val As Long
    Dim ws_source As Worksheet, ws_pos As Worksheet, ws_neg As Worksheet
    Dim wb As Workbook

    Set wb = ThisWorkbook
    Set ws_source = wb.Sheets("Sheet1")
    Set ws_pos = wb.Sheets("Sheet2")
    Set ws_neg = wb.Sheets("Sheet3")

    last_pos_val = 1
    last_neg_val = 1
    last_row = 20

    For row = 1 To last_row
        If ws_source.Cells(row,1) <> "" Then 
            If ws_source.Cells(row,1) > 0 Then 
                ws_pos.Cells(last_pos_val,1) = ws_source.Cells(row,1)
                last_pos_val = last_pos_val + 1
            Else
                ws_neg.Cells(last_neg_val,1) = ws_source.Cells(row,1)
                last_neg_val = last_neg_val + 1
            End If
        End If
    Next
End Sub

推荐阅读