访问VBA以拆分Excel中的所有合并单元格

时间:2013-07-18 10:04:00

标签: excel vba ms-access excel-vba ms-access-2007

我需要将一些Excel文件导入Access数据库。我知道如何在VBA中编写导入函数,但由于Excel中的某些合并单元格导致我遇到麻烦,因此无法正常工作。

例如,在Excel电子表格中

enter image description here

导入Access表时,它逐行导入。因此第1行应该是1-pencil-90,并且它是正确的但是由于合并的单元格,第2行和第3行是空的。 结果是

No|Product|Storage
1 | pencil|90
  |       |23
  |       |41

但预期结果应为:

No|Product|Storage
1 | pencil|90
1 | pencil|23
1 | pencil|41

我希望VBA拆分合并的单元格,并使用合并单元格中的信息填充空白数据。请记住,我有很多合并的单元格,手动更改是不可能的。我愿意接受能够帮助我实现愿望结果的任何解决方案。

P / S:aata可以留空,所以我不能使用条件检查,如果它是空白的,那么查看上面的数据。

1 个答案:

答案 0 :(得分:1)

试试这个

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

工作原理:

  • 循环使用范围内的单元格
  • 如果单元格是合并范围的一部分
    • 将Range变量设置为Merged Range
    • 将范围中左上角单元格的当前值记录到变量v中。这是合并范围显示的值
    • 取消合并范围
    • 将记录的值(v)写入现在未合并范围的所有单元格