用Excel的VBA.如下图所示,编程实现把一列中的数据,按每行n个数据的方

2024-11-05 02:31:10
推荐回答(3个)
回答(1):

Sub test()
    Dim InCell As String '输入的单元格
    Dim InElementNumber As Integer '需要重新定义每行的个数
    Dim Aims_Arr() As String '存放分组后数据的数组
    Dim RowNumber As Integer '原始数据个数
    Dim GroupNumber As Integer '原始数据根据重新定义的个数能分几组
    Dim InColumn As String '输入单元格所在的列
    
    InCell = InputBox("请输入数据所在列的某个单元格,样式如【A1】")
    InElementNumber = InputBox("请输入每行按多少个数字排列")

    RowNumber = Range(InCell).CurrentRegion.Rows.Count
    InColumn = Left(InCell, 1)
    
    GroupNumber = Application.Ceiling(RowNumber / InElementNumber, 1)
    
    ReDim Aims_Arr(1 To GroupNumber)
    b = 1
'a是记数组中每个元素拼接多少值
'b是记录下一次循环从哪个地方开始
        For t = 1 To GroupNumber
            Aims_Arr(t) = ""
            a = 1
            For i = b To RowNumber
If a <> InElementNumber + 1 Then
Aims_Arr(t) = Aims_Arr(t) & Range(InColumn & i).Value
a = a + 1
b = b + 1
Else
Exit For
End If
            Next
        Next
    
    
    For t = 1 To GroupNumber
        Range("B" & t) = Aims_Arr(t)
    Next
    
    
End Sub

还可以在代码中优化下,现在看起来有点乱

回答(2):

可以的,这个用vba可以实现,用数组即可。

回答(3):

其实这个需求,不一定需要VBA,公式就可以