- ベストアンサー
Excelの結合したセルの検索
Excelで列方向に結合したセルを検索し、結合セルの先頭の行番号を 取得する方法を考えていますが、良いアイディアが浮かびません。 VBAで良い方法、又はサンプルがありましたら教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは、飲んだくれのANo2、merlionXXです。 > ()内に引数(?)として 1 がありますが、 > 何を意味しているのでしょうか。 MergeArea(1)ですね? 結合セル範囲(MergeArea)の中の1番目のセルという意味です。 For Each c In ActiveSheet.UsedRange で使用範囲(UsedRange)の中のすべてのセルを順に見ていますので、結合セルでは、If c.MergeCells Then で、2番目も3番目も結合セルとして判定されてしまいます。 しかし、iso27001さんのご要望は「結合セルの先頭の行番号を取得する方法」ですので、そのうち1番目のセルだけを対象としているわけです。
その他の回答 (2)
- merlionXX
- ベストアンサー率48% (1930/4007)
列方向とは縦に結合ということですね? 一例です。 Sub test() For Each c In ActiveSheet.UsedRange If c.MergeCells Then '結合セルなら If c.Address = c.MergeArea(1).Address Then '結合セルの先頭なら If c.MergeArea.Rows.Count > 1 Then '縦に結合してるなら MsgBox "行番号は:" & c.Row End If End If End If Next c End Sub
お礼
早速、回答頂きましてありがとうございました。 何行を結合したセルなのかも調べられますね。 ありがとうございました。 一つ質問ですが、コードの3行目で If c.Address = c.MergeArea(1).Address Then ()内に引数(?)として 1 がありますが、 何を意味しているのでしょうか。
- imogasi
- ベストアンサー率27% (4737/17069)
選択した範囲の結合せるを1行コードで探知する方法は無いと思う。其れで Sub TEST01() For Each cl In Range("A1:H20") If cl.MergeCells = True Then 'MsgBox cl.Address If cl.Address = cl.MergeArea(1).Address Then MsgBox cl.Address MsgBox cl.MergeArea.Address End If End If Next End Sub マージセル=マージセル範囲の第1セルと等しいときに 表示している。 このへんを参考に。 ーー Googleででも「mergecell VBA」で照会すればすぐ判る話。 結合セルを調べる http://officetanaka.net/excel/vba/tips/tips50.htm ーー >列方向に結合した も応用してみて。 If cl.MergeArea.Columns.Count=1 Then でとらえられるのでは。 ーー 参考 Sub TEST01() For Each cl In Range("A1:H20") If cl.MergeCells = True Then 'MsgBox cl.Address If cl.Address = cl.MergeArea(1).Address Then MsgBox cl.Address MsgBox cl.MergeArea.Address MsgBox cl.MergeArea.Rows.Count MsgBox cl.MergeArea.Columns.Count End If End If Next End Sub
お礼
早速、回答頂きましてありがとうございました。 判り易いコードなのでなんとか物にできそうです。 ありがとうございました。
お礼
追加説明、ありがとうございました。 自分なりに理解できました。