Excel VBA – 将string列表分组到一个单元格中

我不知道如何最好地描述这个问题,但是我最好用照片解释我的问题。

我有2个工作表:

在工作表数组中,有一定的时间段与它们对应的“数组”相关联。

工作表数组

Sheet1中 ,有一个格式为string的列表:dd / mm / yyyy hh:mm:ss AM / PM – #按照数字的升序sorting,然后按datesorting,最后按时间sorting。

工作表Sheet1

我有的代码,通过提取Array中的数据并在一个单元格中列出它们,在Sheet1中生成这些值。 我使用的代码是。

Sub Filter() Const Array_FirstRow As Integer = 2 'Indicates the first row (row 2) in Array sheet Dim Array_RowIndex As Integer 'variable to loop through array values of col A Dim Summary_PeriodMoment1 As String 'in worksheet Sheet 1 Array_RowIndex = Array_FirstRow Array_LastRow = Array_RowIndex - 1 Summary_PeriodMoment1 = "" For Array_RowIndex = Array_FirstRow To Array_LastRow If Summary_PeriodMoment1 <> " " Then Summary_PeriodMoment1 = Summary_PeriodMoment1 & ", " & Worksheets("Array").Cells(Array_RowIndex, Array_DateTime_Column).Value End If Next Sheet1.Cells(1, 1).Value = Summary_PeriodMoment1 End Sub 

这有点混乱,阅读过于复杂。 有什么办法可以添加代码:

  1. 按#sorting/分组值,并按date合并(以减less混淆)? 像这样?

排序/分组#

  1. 有一个单独的单元格为每个值,再次分类#(我想绘制这些值在一个数据透视图以后使用其他代码,所以希望它是一个友好的格式

理想的输出

本质上,我想要做一些数据重新格式化/转置与VBA脚本。 任何想法我应该使用什么function? 谢谢!

++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++更新:我有我需要在一个单元格中转置一个值的string。 我不知道这是否可以为多个单元格完成。 我试着用这个代码:

  Sub TextToRows() 'Code for 1.2. section Dim Arr As Variant Dim Arr1 As Variant Dim Arr2 As Variant Dim InputRng As Range, InputRng2 As Range, InputRng3 As Range, OutputRng As Range, OutputRng1 As Range, OutputRng2 As Range Set InputRng = Range("B1") 'Cell Containing all the text Set InputRng1 = Range("B2") Set InputRng2 = Range("B3") Set OutputRng = Range("D1") 'First Cell of a column that you want the output there Set OutputRng1 = Range("G1") Set OutputRng2 = Range("J1") Arr = Split(InputRng.Value, ",") Arr1 = Split(InputRng.Value, ",") Arr2 = Split(InputRng.Value, ",") Set OutputRng = OutputRng.Resize(UBound(Arr) - LBound(Arr) + 1) OutputRng.Value = Application.Transpose(Arr) Set OutputRng1 = OutputRng1.Resize(UBound(Arr1) - LBound(Arr1) + 1) OutputRng.Value = Application.Transpose(Arr1) Set OutputRng2 = OutputRng2.Resize(UBound(Arr2) - LBound(Arr2) + 1) OutputRng.Value = Application.Transpose(Arr2) End Sub 

似乎它只适用于InputRng而不是InputRng1或InputRng2 在这里输入图像说明

1.如何在一个单元格中分隔逗号分隔的数据? (往下看)

1.1。 如果您没有其他数据,并且logging数不超过Excel中可能的列数,那么工作表内的转换是一个选项(而不是使用下面的代码)。

1.2。 (如果你有比excel列更多的数据):否则,你需要使用数组。 下面的代码回答你的问题的第一部分。 它会将单元格分隔为“,”作为分隔符。

2.然后,您可以使用文本到 数据选项卡中的和分隔符“:”来获取一列中的数字和另一列中的date。

3.使用如何基于另一列中的唯一值在一列中移动单元格? 根据数字对他们进行分组。

 Sub TextToRows() 'Code for 1.2. section Dim Arr As Variant Dim InputRng As Range, OutputRng As Range Set InputRng = Range("B1") 'Cell Containing all the text Set OutputRng = Range("D1") 'First Cell of a column that you want the output there Arr = Split(InputRng.Value, ",") Set OutputRng = OutputRng.Resize(UBound(Arr) - LBound(Arr) + 1) OutputRng.Value = Application.Transpose(Arr) End Sub