访问VBA以拆分Excel中的所有合并单元格
我需要将一些Excel文件导入Access数据库。我知道如何在VBA中编写导入函数,但由于Excel中的某些合并单元格给我带来了麻烦,导入函数无法正常工作 例如,在Excel电子表格中 导入Access表时,它会逐行导入。所以第一行应该是1-pencil-90,这是正确的,但是由于合并了单元格,第二行和第三行是空的。 结果是访问VBA以拆分Excel中的所有合并单元格,vba,ms-access,excel,ms-access-2007,Vba,Ms Access,Excel,Ms Access 2007,我需要将一些Excel文件导入Access数据库。我知道如何在VBA中编写导入函数,但由于Excel中的某些合并单元格给我带来了麻烦,导入函数无法正常工作 例如,在Excel电子表格中 导入Access表时,它会逐行导入。所以第一行应该是1-pencil-90,这是正确的,但是由于合并了单元格,第二行和第三行是空的。 结果是 No|Product|Storage 1 | pencil|90 | |23 | |41 但预期结果应该是: No|Product|St
No|Product|Storage
1 | pencil|90
| |23
| |41
但预期结果应该是:
No|Product|Storage
1 | pencil|90
1 | pencil|23
1 | pencil|41
< >我希望VBA对合并的单元格进行拆分,并用合并单元格中的信息填充空白数据。请记住,我有很多合并的单元格,手动更改是不可能的。我愿意接受任何有助于我实现理想结果的解决方案
p/S:aata可以保留为空,因此我不能使用条件检查。如果它为空,请查找上述数据。试试这个
Sub UnMergeRanges()
Dim cl As Range
Dim rMerged As Range
Dim v As Variant
For Each cl In ActiveSheet.UsedRange
If cl.MergeCells Then
Set rMerged = cl.MergeArea
v = rMerged.Cells(1, 1)
rMerged.MergeCells = False
rMerged = v
End If
Next
End Sub
工作原理:
- 循环使用范围内的单元格
- 如果单元格是合并范围的一部分
- 将范围变量设置为合并范围
- 将范围内左上角单元格的当前值记录到变量
中。这是合并范围显示的值v
- 解除射程
- 将记录的值(
)写入当前未合并范围的所有单元格v
Sub UnMergeRanges()
Dim cl As Range
Dim rMerged As Range
Dim v As Variant
For Each cl In ActiveSheet.UsedRange
If cl.MergeCells Then
Set rMerged = cl.MergeArea
v = rMerged.Cells(1, 1)
rMerged.MergeCells = False
rMerged = v
End If
Next
End Sub
工作原理:
- 循环使用范围内的单元格
- 如果单元格是合并范围的一部分
- 将范围变量设置为合并范围
- 将范围内左上角单元格的当前值记录到变量
中。这是合并范围显示的值v
- 解除射程
- 将记录的值(
)写入当前未合并范围的所有单元格v