gpt4 book ai didi

vba - 逗号分隔单元格到行,但保留周围列中的数据

转载 作者:行者123 更新时间:2023-12-04 21:07:30 24 4
gpt4 key购买 nike

Excel Macro - Comma Separated Cells to Rows Preserve/Aggregate Column

我的问题与上面的链接几乎完全相同,除了我想要拆分的列周围有数据,如下所示:

 <- A (Category) ->   <- B (Items) -> <- B (Items) -> <- B (Items) -> <- B (Items) ->
1 Cat1 date1 a,b,c a1,b1,c1 item1
2 Cat2 date2 d d1 item2
3 Cat3 date3 e,f e1,f1 item3
4 Cat4 date4 g g1 item4

我想要的是这样的:

 <- A (Category) ->   <- B (Items) -> <- C (Items) -> <- D (Items) -> <- E (Items) ->
1 Cat1 date1 a a1 item1
1 Cat1 date1 b b1 item1
1 Cat1 date1 c c1 item1
2 Cat2 date2 d d1 item2
3 Cat3 date3 e e1 item3
3 Cat3 date3 f f1 item3
4 Cat4 date4 g g1 item4


我想将 C 列和 D 列拆分为新行并复制 A、B 和 E 中的项目。实际上有更多列,但我这样做是为了更容易。

下面的代码仅适用于 2 个相邻的列。我想知道是否可以输入要复制的列范围?
Sub ExpandData()
Const FirstRow = 2
Dim LastRow As Long
LastRow = Range("A" & CStr(Rows.Count)).End(xlUp).Row

' Get the values from the worksheet
Dim SourceRange As Range
Set SourceRange = Range("A" & CStr(FirstRow) & ":B" & CStr(LastRow))

' Get sourcerange values into an array
Dim Vals() As Variant
Vals = SourceRange.Value

' Loop through the rows in the array and split each comma-delimited list of items and put each on its own row
Dim ArrIdx As Long
Dim RowCount As Long
For ArrIdx = LBound(Vals, 1) To UBound(Vals, 1)

Dim CurrCat As String
CurrCat = Vals(ArrIdx, 1)

Dim CurrList As String
CurrList = Replace(Vals(ArrIdx, 2), " ", "")

Dim ListItems() As String
ListItems = Split(CurrList, ",")

Dim ListIdx As Integer
For ListIdx = LBound(ListItems) To UBound(ListItems)

Range("A" & CStr(FirstRow + RowCount)).Value = CurrCat
Range("B" & CStr(FirstRow + RowCount)).Value = ListItems(ListIdx)
RowCount = RowCount + 1

Next ListIdx

Next ArrIdx

End Sub

最佳答案

一种直接的简化是

 Set SourceRange = [A1].CurrentRegion

其余的,看起来您走在正确的轨道上,但是您想更改 ListItems... 逻辑以设置 bool 值来告诉您拆分其他列。

你最终得到一个 If Then Else ,一侧处理简单的行,而
另一方处理多项目行。更多代码,但简单且不太可能出现错误。

关于vba - 逗号分隔单元格到行,但保留周围列中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com