我发现我原来的编的程序只适合,标准的EXCEL的显示,
例如:EXCEL格式是这样的
安徽  合肥
安徽  芜湖
安徽  蚌埠
导入结果正常
如果EXCEL出现合并项时比如一对多的显示的时候,例如:安徽  合肥
                                                      芜湖
                                                      蚌埠
这种形式的表格时候导入数据库的时候就发现纪录形式是这样的了:
安徽   合肥
       芜湖
       蚌埠

解决方案 »

  1.   

    我认为有两种方法
    1。如果你的Excel是严格连续的,有规则的,就是说合并行的下面是另一条数据或者合并行比如A1        B1
    +--------+----------+
    | Anhui  | A        |
    +        +----------+
    |        | B        | 
    +        +----------+
    |        | C        |
    +--------+----------+
    |Beijing | V        | 
    +        +----------+
    |        | B        | 
    +--------+----------+
    A5        B5那你可以在取到A1=Anhui以后用一个全局变量保存这个值
    在取A2的时候因为是""的所以引用全局变量A2=Anhui
    当取到A4<>"" 而=Beijing了,就重新给全局变量负值这种方法快一点,但是要求Excel表格严格有规律2。判断是否合并
    每读一个Cell的时候
    Set ma = Range("A1").MergeArea
    MsgBox ma.Address得到结果A1:A3
    那你可以根据这个结果来计算可能还有更好的办法,问问李宏根兄,他是这方面的高手
      

  2.   

    每读一个Cell的时候
    Set ma = Range("A1").MergeArea
    MsgBox ma.Address在计算这个之前先
    if range("a1").mergecell=true then
        取得合并区域....计算。
    Endif
      

  3.   

    你可以把这段待码放到你的Excel文件里面单步执行,看看
    这段代码估计可以满足你的要求
    -------------------------------------------------Dim m_sLastCity '保存读到的上一个城市Dim asCity(), asData()
    Dim m_lCounterSub ReadData()
        Dim nRow, nCol
        Dim sCurrentCity
        Dim sData
        m_lCounter = 0
        For nRow = 1 To 12 '多少行你自己改一下
            sCurrentCity = Cells(nRow, 1)
            sData = Cells(nRow, 2)
            If sCurrentCity = "" Then '判断是否没有数据
                If m_sLastCity = "" Then
                    Debug.Print "Found an illegal Execl row!"
                Else
                    sCurrentCity = m_sLastCity
                End If
            Else
                m_sLastCity = sCurrentCity
            End If
            If sCurrentCity <> "" And sData <> "" Then
                '合法的行,进行保存。当然,我是保存到数租里面,你可能要价到数据库里面,自己改了
                ReDim Preserve asCity(m_lCounter)
                ReDim Preserve asData(m_lCounter)
                asCity(m_lCounter) = sCurrentCity
                asData(m_lCounter) = sData
                m_lCounter = m_lCounter + 1
            End If
        Next
    End Sub
      

  4.   

    你可以在输入前先建立一个临时的EXCEL,在这个临时的表中,将没填的字段填上去,然后再导入ACCESS中