gpt4 book ai didi

Excel 数据源 按组排序 其他页面

转载 作者:行者123 更新时间:2023-12-04 20:20:16 28 4
gpt4 key购买 nike

为了这个问题,假设我有一个包含各种酒类的 Excel 数据源电子表格。

(Cell A) | (Cell B)
Bacardi | Rum
Smirnoff | Vodka
Another Vodka | Vodka
Yet Another Vodka | Vodka
Malibu | Rum
Meyers | Rum

等等

在文档中的另一张纸上,我想将其列出如下:
RUM
Bacardi
Malibu
Meyers
----------
VODKA
Smirnoff
Another Vodka
Yet Another Vodka

...其中朗姆酒是一类,伏特加是另一类。

如何将我的数据源(第一个示例)转换为第二个示例?

最佳答案

这不是最优雅的方式,也不是最有效的方式,但如果你赶时间,这里是如何使用 2 个字典来完成的!

Sub test()

Dim varray As Variant, v As Variant
Dim lastRow As Long, i As Long
Dim results() As String
Dim dict As Object, dict2 As Object
Set dict = CreateObject("scripting.dictionary")
Set dict2 = CreateObject("scripting.dictionary")

lastRow = Sheet1.range("B" & Rows.count).End(xlUp).Row
varray = Sheet1.range("A1:B" & lastRow).Value

On Error Resume Next
'Make the liquer dictionary
For i = 1 To UBound(varray, 1)
If dict.exists(varray(i, 2)) Then
dict(varray(i, 2)) = dict(varray(i, 2)) & _
vbLf & varray(i, 1)
Else
dict.Add varray(i, 2), (varray(i, 1))
End If
Next

i = 1
For Each v In dict
dict2.Add i, UCase(v)
i = i + 1
results() = Split(dict.Item(v), vbLf)
For j = 0 To UBound(results())
dict2.Add i, results(j)
i = i + 1
Next
dict2.Add i, "----------"
i = i + 1
Next

Sheet2.range("A1").Resize(dict2.count).Value = _
Application.Transpose(dict2.items)

End Sub

工作原理:使用字典分隔主要类别和子项(通过将它们连接为该键的项)非常方便。
你可以想办法把它重新放到 Excel 上,但它需要调整大小,而且很麻烦。由于字典具有转置所有键或项目的能力,我选择将键-项目对(现在按技术顺序)转储到另一个字典中,但作为项目而不是键,所以我可以保持欺骗。它还可以让您进行最终的数据按摩,例如 uCase 类别并添加分隔符等。然后我只是转置结果。

非常规,也许,但有趣且有效!

关于Excel 数据源 按组排序 其他页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382679/

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