gpt4 book ai didi

vba - 使用 VBA 在 Excel 中整理数据

转载 作者:行者123 更新时间:2023-12-04 21:56:37 27 4
gpt4 key购买 nike

是什么情况:

所以我得到了一个 excel 格式的“结果样本”,需要过滤和整形才能看起来不错。这是一个不会一直相同的结果,但它遵循类似的规则。我必须进一步过滤它,让它更整洁一些。我已经弄清楚了过滤部分,但我不确定如何以整洁的方式对剩余数据进行排序。

什么情况:

涉及六列。

通知:真正的交易并不是那么简单,但是我可以用这样一个简单的例子来证明我需要什么,然后我想我可以自己管理更复杂的东西。

对于我们的示例,我们使用从 B 到 G 的列
数据被设置为“标题”和值的对。
例如,如果您查看我提供的第一张示例图片,第一张详细说明了 B3 和 C3 对。

可以看到,看同一张图,D3 和 E3 是空对。
D4 - E4 和 F4 - G4 等也是如此,直到最后一个在 B11 - C11。
起始数据示例:

[ Scattered data]

我要达到的目标:

我想使用 Visual Basic for Applications 对数据进行排序,从我们的示例 B3 开始(参见第二张图片),如果其中没有数据,则填充两列的三个集合(BC、DE、FG)细胞。

注意:如果像 D3 这样的单元格为空,那么 E3 肯定也会为空,因此只能进行一次检查。我的意思是我们可以检查值列或标题列。

注意 2:B、D、F 或 C、E、G 列不必排序。我只希望 B、D、F 的所有非空值以及它们各自来自 C、E、G 的值整齐地聚集在一起,因此打印不需要 30 页而只需要几页(之间的空格太多会导致它,我尝试自动清理)

Sorted data

最佳答案

这是开始的事情。第一个双循环使用 Range 变量填充 VBA 集合,这些变量引用包含标题的单元格。
相关值是通过使用偏移量获得的。中间的双循环对后者执行冒泡排序(效率极低 - 您可能想用其他东西替换它)。如果它不存在,则下一个 if 语句将创建第二张表来写出结果(最后一个循环)。

Option Explicit


Sub GatherData()
Dim lastRow As Integer, lastCol As Integer
Dim r As Integer, c As Integer
Dim vals As Collection
Set vals = New Collection

With Sheets(1)
lastCol = .UsedRange.Columns(.UsedRange.Columns.Count).Column
lastRow = .UsedRange.Rows(.UsedRange.Rows.Count).row
For c = 1 To lastCol Step 2
For r = 1 To lastRow
If (Trim(Cells(r, c).Value) <> "") Then
vals.Add .Cells(r, c)
End If
Next
Next
End With

' Bubble Sort
Dim i As Integer, j As Integer
Dim vTemp As Range
For i = 1 To vals.Count - 1
For j = i + 1 To vals.Count
If vals(i).Value > vals(j).Value Then
Set vTemp = vals(j)
vals.Remove j
vals.Add vTemp, vTemp, i
End If
Next j
Next i

Dim sht2 As Worksheet
If ThisWorkbook.Worksheets.Count = 1 Then
Set sht2 = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(1))
Else
Set sht2 = Worksheets(2)
End If

With sht2
r = 3
c = 2
For i = 1 To vals.Count
.Cells(r, c).Value = vals(i).Value
.Cells(r, c + 1).Value = vals(i).Offset(, 1).Value
c = c + 2
If c = 8 Then
r = r + 1
c = 2
End If
Next
End With

End Sub

关于vba - 使用 VBA 在 Excel 中整理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43310956/

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