Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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,早上好, 自从我用VBA编写代码以来,已经有一段时间了。我有下面的图表(图1),我需要像图2一样翻转。新的月份将在未来增加,所以我需要能够解释这一点。下个月将显示4月,每个月的格式与第一张图表相同。诸如此类 如蒙协助,将不胜感激 试试这段代码 Sub MyTest() Dim a, w, i As Long, j As Long, k As Long, m As Long, n As Long a = Range("B2:F6").Value For i = LBound(a) To UB

早上好, 自从我用VBA编写代码以来,已经有一段时间了。我有下面的图表(图1),我需要像图2一样翻转。新的月份将在未来增加,所以我需要能够解释这一点。下个月将显示4月,每个月的格式与第一张图表相同。诸如此类

如蒙协助,将不胜感激

试试这段代码

Sub MyTest()
Dim a, w, i As Long, j As Long, k As Long, m As Long, n As Long

a = Range("B2:F6").Value

For i = LBound(a) To UBound(a)
    w = Application.Index(a, i, 0): k = 1: m = 0: n = 0
    For j = LBound(w) To UBound(w)
        If w(j) <> Empty Then
            a(i, k) = w(j)
            k = k + 1
        Else
            n = n + 1
        End If
    Next j
    If n > 0 Then
        For j = UBound(a, 2) To LBound(a, 2) Step -1
            m = m + 1
            a(i, j) = Empty
            If m = n Then Exit For
        Next j
    End If
Next i

Range("B10").Resize(UBound(a, 1), UBound(a, 2)).Value = a
End Sub
Sub MyTest()
暗a,w,i为长,j为长,k为长,m为长,n为长
a=范围(“B2:F6”)。值
对于i=LBound(a)到UBound(a)
w=应用程序索引(a,i,0):k=1:m=0:n=0
对于j=LBound(w)到UBound(w)
如果w(j)为空,则
a(i,k)=w(j)
k=k+1
其他的
n=n+1
如果结束
下一个j
如果n>0,则
对于j=UBound(a,2)到LBound(a,2)步骤-1
m=m+1
a(i,j)=空
如果m=n,则退出
下一个j
如果结束
接下来我
范围(“B10”)。调整大小(UBound(a,1),UBound(a,2))。值=a
端接头

定义要翻转的范围,然后移动该范围,检查每个单元格左侧的空白单元格。如果找到,请将最左边空白单元格的值设置为选中单元格的值,然后清除当前单元格。谢谢。你不可能偶然提供一个例子,是吗?我已经好几年没有编写VBA了。试试看,如果你被卡住了,让我们来帮助你。但首先,你需要做一些工作……这太复杂了……@FrankBall我也这么认为。等待其他人做出贡献,从他们的方法中学习。