如何合并excel中的单元格?如果细胞mrged如何读取值?

时间:2013-01-30 08:45:31

标签: excel vba

如何检测excel中的单元格是否合并?

如果合并了单元格,我该如何读取值?

5 个答案:

答案 0 :(得分:9)

我认为没有任何公式可以告诉您是否合并了一个单元格。您可以编写自己的公共函数,将其放在代码模块中,然后在工作表中使用它:

Function IsMerged(rCell As Range) As Boolean
' Returns true if referenced cell is Merged        
          IsMerged = rCell.MergeCells        
End Function

然后作为测试单元格A1的Excel公式:

=IsMerged(A1)

答案 1 :(得分:1)

乌拉!想出了一种检查单元格是否合并并返回该单元格值的方法:

Sub checkCellMerged1()
'With ThisWorkbook.ActiveSheet
Set ma = ActiveCell.MergeArea

On Error GoTo errHand
If ma = ActiveCell Then MsgBox ActiveCell.Address & " is not merged"
GoTo final

errHand:
If Err.Number = 13 Then MsgBox "Merged Address = " & ma.Address _
& vbCrLf & "Value = " & ma(1).Value

final:
On Error GoTo 0
'End With
End Sub

答案 2 :(得分:1)

以下是如何在VBA中读取单元格的值,无论它是否已合并。

C.MergeArea.Cells(1, 1).Value

其中C是您要查看的单元格。这种方法的工作方式是,如果单元格未合并,MergeArea与单元格本身完全相同;否则MergeArea是已合并的单元格范围。当合并单元格时,该值将保留在最左边的单元格中。

答案 3 :(得分:0)

如果总是填充B和C,则有一个简单的非VBA方法来确定是否合并了一个单元格。只需做COUNTA(B2,C2)并检查总数。如果B2与C2合并,则总数将为1,如果不是,则计数为2。

答案 4 :(得分:0)

一个常见的需求是只定位合并范围中的第一个单元格。这段代码就是这样做的。

If 语句结果仅对第一个单元格为真;合并与否。

Sub RunOnlyForFirstCell()
    Dim c As Range
    Dim MergedCellsArea As Range
    
    For Each c In Selection.Cells
        Set MergedCellsArea = c.MergeArea
        If c.Address = MergedCellsArea(1, 1).Address Then
            '''run your sub
            Debug.Print c.Address; Selection.Cells.Count; MergedCellsArea(1, 1).Address
        End If
    Next c
 End Sub