Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel vba比较并对齐空白与非空白,并向下移动_Excel_Vba - Fatal编程技术网

excel vba比较并对齐空白与非空白,并向下移动

excel vba比较并对齐空白与非空白,并向下移动,excel,vba,Excel,Vba,我有一张如下表: 我想将B&C列向下移动到下一个非空白单元格,如下所示 你能帮帮我吗?可以有多个B列和C列 谢谢试试看 Sub test() Dim Ws As Worksheet Dim rngDB As Range, rng As Range Dim vDB As Variant, vR() As Variant Dim i As Long, r As Long Dim n As Long, c As Integer, j As Integer

我有一张如下表:

我想将B&C列向下移动到下一个非空白单元格,如下所示

你能帮帮我吗?可以有多个B列和C列

谢谢

试试看

Sub test()
    Dim Ws As Worksheet
    Dim rngDB As Range, rng As Range
    Dim vDB As Variant, vR() As Variant
    Dim i As Long, r As Long
    Dim n As Long, c As Integer, j As Integer

    Set Ws = ActiveSheet
    Set rngDB = Ws.UsedRange
    vDB = rngDB
    r = UBound(vDB, 1)
    c = UBound(vDB, 2)
    ReDim vR(1 To r, 1 To c)
    For i = 1 To r
        vR(i, 1) = vDB(i, 1)
        If vDB(i, 1) = "" Then
            n = n + 1
        Else
            For j = 2 To c
                vR(i, j) = vDB(i - n, j)
            Next j
        End If

    Next i
    'rngDB = vR  '<~~~  Use this to write on the same sheet.
    Sheets.Add
    Range("a1").Resize(r, c) = vR
End Sub
子测试()
将Ws设置为工作表
变暗rngDB As范围,rng As范围
Dim vDB作为变型,vR()作为变型
暗淡的i一样长,r一样长
尺寸n为长,c为整数,j为整数
设置Ws=ActiveSheet
设置rngDB=Ws.UsedRange
vDB=rngDB
r=UBound(vDB,1)
c=UBound(vDB,2)
雷迪姆vR(1对右,1对c)
对于i=1到r
vR(i,1)=vDB(i,1)
如果vDB(i,1)=“那么
n=n+1
其他的
对于j=2到c
vR(i,j)=vDB(i-n,j)
下一个j
如果结束
接下来我
“rngDB=vR”