使用VBA将列的条目拆分为多个其他列

时间:2017-03-02 09:49:52

标签: vba excel-vba excel

我在工作表的列中有几个条目(即128个),并希望将它们分成不同工作表上的多个新列。我已经在KuTools for Excel中找到了一些代码,但它并没有按照我想要的方式运行。 使用此代码:

Sub SplitColumn()
'Updateby20141106
Dim rng As Range
Dim InputRng As Range
Dim OutRng As Range
Dim xRow As Integer
Dim xCol As Integer
Dim xArr As Variant
xTitleId     = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type: = 8)
xRow         = Application.InputBox("Rows :", xTitleId)
Set OutRng   = Application.InputBox("Out put to (single cell):", xTitleId, Type: = 8)
Set InputRng = InputRng.Columns(1)
xCol         = InputRng.Cells.Count / xRow
ReDim xArr(1 To xRow, 1 To xCol + 1)
For i = 0 To InputRng.Cells.Count - 1
    xValue = InputRng.Cells(i + 1)
    iRow = i Mod xRow
    iCol = VBA.Int(i / xRow)
    xArr(iRow + 1, iCol + 1) = xValue
Next
OutRng.Resize(UBound(xArr, 1), UBound(xArr, 2)).Value = xArr
End Sub

这基本上很棒,我可以将列拆分为可变数量的新列,具体取决于每列应包含的行数。尽管如此,我希望值为1.是实际值的链接(即$ A $ 1而不是1)和2.将逐列划分为新列。因此newColumn 1在第一行获取A1的链接,newColumn 2获取A2的链接,依此类推。 我最大的愿望是,能够为每个新列定义行数(即新列1获得10行,新列2获得7等)并且这些仍将逐行填充。

非常感谢你的帮助! 利奥

1 个答案:

答案 0 :(得分:0)

你的问题有点矛盾。如果希望输出首先从左到右工作,那么就不能有不同长度的列。

以下是我如何更改主输出循环以创建链接而不是源数据的值。

For i = 0 To InputRng.Cells.Count - 1
    iRow = i Mod xRow
    iCol = VBA.Int(i / xRow)
    xArr(iRow + 1, iCol + 1) = "='" & InputRng.Cells(i + 1).Parent.Name & "'!" & InputRng.Cells(i + 1).Address
Next