Excel宏将列中的数据移动到其他列的下方
我有从A到I的9列数据。我需要做的是把D,E,F和G,H,I移到A,B,C下面,所以它是3列。我的行数是可变的 现在我的数据是这样的 A B C D E F G H I 1 2 3 4 5 6 7 8 9 A B C D E F G H I 1 2 3 4 5 6 7 8 9 我需要它看起来像这样: A B C 1 2 3 4 5 6 7 8 9 A、B、C 1 2 3 4 5 6Excel宏将列中的数据移动到其他列的下方,excel,vba,Excel,Vba,我有从A到I的9列数据。我需要做的是把D,E,F和G,H,I移到A,B,C下面,所以它是3列。我的行数是可变的 现在我的数据是这样的 A B C D E F G H I 1 2 3 4 5 6 7 8 9 A B C D E F G H I 1 2 3 4 5 6 7 8 9 我需要它看起来像这样: A B C 1 2 3 4 5 6 7 8 9 A、B、C 1 2 3 4 5 6 7.8.9@user1759942提到的内容通常是正确的,但是代码已经编写好了,尽管是用Word编写
7.8.9@user1759942提到的内容通常是正确的,但是代码已经编写好了,尽管是用Word编写的。复制您的数据并粘贴特殊。。。将未格式化的文本转换为Word。选择全部,插入>表格-表格并将文本转换为表格。。。列数:
3
。复制回Excel并删除第二行和第三行 @user1759942提到的内容通常是正确的,但是代码已经编写好了,尽管是用Word编写的。复制您的数据并粘贴特殊。。。将未格式化的文本转换为Word。选择全部,插入>表格-表格并将文本转换为表格。。。列数:3
。复制回Excel并删除第二行和第三行 看起来像是自由职业者的工作!
在今天的节目中…
小男孩:我能得到这个问题的答案吗
自由职业者:当然,小男孩!我敢说,这是我们的好朋友的工作,阵列
LB:什么是阵列,FFL先生
FFL:您可以。别问我
LB:但这对我们有什么帮助
FFL:非常简单,它允许我们想象和创建矩阵!由于OP需要一维(1D)数据集的矩阵式排列,我们可以将其分配给矩阵式数组,然后将其传输回Excel
LB:I。。。不要。。。明白。请帮帮我!请给我一个答案好吗
FFL:但我还没做完!小男孩,要有勇气去理解这些东西!首先,让我们长途跋涉吧!让我们创建一个3行3列的数组
Dim Arr(1 to 3, 1 to 3) As Variant
FFL:。。。这里,我们有一个数组!这是一个简单的x-y
图,我们可以用数据填充它。因为他只有9个数据点,他想在一个3x3矩阵中排列,所以我们知道需要设置数组的大小
LB:嘿,看起来很简单,FFL
FFL:是的!现在,请参见以下内容。对于绘图中的每个“坐标”,让我们指定一个值
Arr(1, 1) = Cells(2, 1).Value
Arr(1, 2) = Cells(2, 2).Value
Arr(1, 3) = Cells(2, 3).Value
Arr(2, 1) = Cells(2, 4).Value
Arr(2, 2) = Cells(2, 5).Value
Arr(2, 3) = Cells(2, 6).Value
Arr(3, 1) = Cells(2, 7).Value
Arr(3, 2) = Cells(2, 8).Value
Arr(3, 3) = Cells(2, 9).Value
FFL:非常简单,我们现在能够将值绘制到数组中。现在我知道数组的第三行和第二列将具有工作表中第二行和第八列的单元格值
LB:哇,这让它看起来很简单!谢谢FFL先生
FFL:不客气,小男孩!但没那么快,我在上面的9行中看到了一些东西。。。我看到一个。。。图案这是一种模式,小男孩。好心告诉我
LB:图案?但我看到的都是连续的数字之类的
FFL:当然!连续数字对我们有好处,因为我们可以使用用于循环!现在让我们简化上面的内容。。。我知道我想要3行3列。我知道我的值在9个不同的单元格中。我要做的是遍历每一行,然后遍历数组的每一列,并为它们赋值。由于所需值的列发生了更改,我将在最内部的循环中递增它,因此我的“指针”将移动
LB:FFL先生,别用那些东西吓唬我
FFL:啊,人是由球决定的,所以让我们继续学习代码吧
ColIndex = 1
For Iter1 = 1 To 3
For Iter2 = 1 To 3
Arr(Iter1, Iter2) = Cells(2, ColIndex).Value
ColIndex = ColIndex + 1
Next
Next
FFL:在这里,我将其简化为一个相当简单和直观的循环!这样做的好处是,如果OP想要基于更长的单元格范围创建更大的绘图,他只会使用这几行来创建它们
LB:哇!看起来棒极了,先生!但我该怎么把它放回去,我该怎么做
FFL:那我们再做一个循环吧!小男孩,你真是个笨蛋
For i = 1 To 3
For j = 1 To 3
Cells(i + 1, j).Value = Arr(i, j)
Next
Next
FFL:Mwahahaha!现在我们已经用那条长长的价值线中的所有东西填充了我们想要的单元格!我会留给你的,小男孩,删除不需要的列和东西的方法
LB:但是。。。但是FFL先生,你为什么不把循环中新单元格的值与旧单元格的值相等?为什么要使用数组
FFL:。。。犯错误HNGGRR。。。你为什么在乎免费代码>
直到下一次《自由职业者》上映
剧情回顾(完整代码):
Sub TransformToTable()
Dim Arr(1 To 3, 1 To 3) As Variant
ColIndex = 1
For Iter1 = 1 To 3
For Iter2 = 1 To 3
Arr(Iter1, Iter2) = Cells(2, ColIndex).Value
ColIndex = ColIndex + 1
Next
Next
For i = 1 To 3
For j = 1 To 3
Cells(i + 1, j).Value = Arr(i, j)
Next
Next
End Sub
看起来像是自由职业者的工作!
在今天的节目中…
小男孩:我能得到这个问题的答案吗
自由职业者:当然,小男孩!我敢说,这是我们的好朋友的工作,阵列
LB:什么是阵列,FFL先生
FFL:您可以。别问我
LB:但这对我们有什么帮助
FFL:非常简单,它允许我们想象和创建矩阵!由于OP需要一维(1D)数据集的矩阵式排列,我们可以将其分配给矩阵式数组,然后将其传输回Excel
LB:I。。。不要。。。明白。请帮帮我!请给我一个答案好吗
FFL:但我还没做完!小男孩,要有勇气去理解这些东西!首先,让我们长途跋涉吧!让我们创建一个3行3列的数组
Dim Arr(1 to 3, 1 to 3) As Variant
FFL:。。。这里,我们有一个数组!这是一个简单的x-y
图,我们可以用数据填充它。因为他只有9个数据点,他想在一个3x3矩阵中排列,所以我们k