如何检测excel中的单元格是否合并?
如果合并了单元格,我该如何读取值?
答案 0 :(得分:9)
我认为没有任何公式可以告诉您是否合并了一个单元格。您可以编写自己的公共vba函数,将其放在代码模块中,然后在工作表中使用它:
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