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
还可以在代码中优化下,现在看起来有点乱
可以的,这个用vba可以实现,用数组即可。
其实这个需求,不一定需要VBA,公式就可以