• ベストアンサー

Excelの結合したセルの検索

Excelで列方向に結合したセルを検索し、結合セルの先頭の行番号を 取得する方法を考えていますが、良いアイディアが浮かびません。 VBAで良い方法、又はサンプルがありましたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

こんばんは、飲んだくれのANo2、merlionXXです。 > ()内に引数(?)として 1 がありますが、 > 何を意味しているのでしょうか。 MergeArea(1)ですね? 結合セル範囲(MergeArea)の中の1番目のセルという意味です。 For Each c In ActiveSheet.UsedRange で使用範囲(UsedRange)の中のすべてのセルを順に見ていますので、結合セルでは、If c.MergeCells Then で、2番目も3番目も結合セルとして判定されてしまいます。 しかし、iso27001さんのご要望は「結合セルの先頭の行番号を取得する方法」ですので、そのうち1番目のセルだけを対象としているわけです。

iso27001
質問者

お礼

追加説明、ありがとうございました。 自分なりに理解できました。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

列方向とは縦に結合ということですね? 一例です。 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

iso27001
質問者

お礼

早速、回答頂きましてありがとうございました。 何行を結合したセルなのかも調べられますね。 ありがとうございました。 一つ質問ですが、コードの3行目で  If c.Address = c.MergeArea(1).Address Then ()内に引数(?)として 1 がありますが、 何を意味しているのでしょうか。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

選択した範囲の結合せるを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

iso27001
質問者

お礼

早速、回答頂きましてありがとうございました。 判り易いコードなのでなんとか物にできそうです。 ありがとうございました。

関連するQ&A

  • Excel VBAで結合されたセルの数

    列方向に項目番号、行方向に内容が記入された表があります。 この、項目番号のセルは結合されており、その結合数は色々(3~9)です。 この時、例えば上から3項目を選択した際、VBA上でそれが上から3段目である事が判る様にしたいのですが、どの様にすればいいのでしょうか? セルの結合数が同じ場合は行番号から判断出来るのですが、結合数が一定で無い場合の方法が分からなくって困っています。 宜しくお願い致します。

  • エクセルVBAでセル結合

    いつもお世話になっています。 エクセル2003でVBAを使って下記をしたいのでその、VBA構文を教えて下さい。 特定の列のあるセルに文字が入っています。 (文字が入っている列は固定ですが、行番号はデータによって変わります。例えば、Aデータの場合は「J30」、Bデータの場合は、「J55」だったりします。) この文字が入っているセルをVBAで検索し、検索したセルを右隣のセルと結合します。(先ほどのAデータの場合、J30:Z30に結合します。) 更に、文字が入っているセルが2以上の複数の場合があります。(先ほどのAデータの場合、「J30」と「J40」と「J45」という感じです。文字が入っているセルの数はデータにより異なります。) 結合が終わり、このシートのデータがあるところだけに罫線を引きます。(このシートのデータというのは、前述の文字とそれ以外は、「数字」と「・」です。 ややこしいですが、よろしくお願いします。

  • 【エクセル:セル内の文書結合】 右に並んだ全てを結合するには?

    既出でしたら申し訳ございません。 エクセルで下記「サンプルイメージ」での記載状況の際 1行A列のセルに、1行目B列からZZ列に記入された 全ての文書を、結合する方法があれば教えて頂けないでしょうか? 尚、1行A列のセル内の表示方法は、結合するセル毎に改行され、 結合するセルが未記入の場合は、そのセルは結合対象から外したいと 考えています。 以上、わかりにくければ補足いたしますのでご指摘下さい。 ご回答頂ければ幸いです。 サンプルイメージ 下記の通り入力されているものを・・・   <A><B><C><D>・・・・<ZZ> 1)     あ   い   う        わ 2)     あ       う        わ 3)     あ   い   う 4)     あ        このように表示したい   <A><B><C><D>・・・・<ZZ> 1) あ   あ   い   う        わ    い    う    わ 2) あ   あ       う        わ    う    わ 3) あ   あ   い   う    い    う 4) あ   あ        

  • エクセルでセルの結合

    エクセルで文字入力をしています。セルを行、列 結合して上揃いにしたいのですが、1回ごとに設定するのではなく、アイコンを作リたいと思いますが、方法がわかりません。

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。 

  • EXCELにて名前をつけたセルについて

    EXCELにて名前をつけたセルがあります。 それをVBAにて、先頭行の各列を全て取得したいのですが、どのようにすれば、良いのでしょうか? 例) 下記セルがDATAにて名前がついています    出席番号   名前       部活動         1  佐藤数男    ラグビー         2 雨宮玲子    剣道 上記、DATAより、見出しとなる「出席番号」,「名前」,「部活動」を取得したい よろしくお願いします

  • VBAにてエクセルのセルを結合するには?

    VBAにて、エクセルのセルを結合したいのですが? やっていることは、Access97よりVBAで、 Excel97へファイルを落とし込んでいるのですが 罫線を引いたり、列幅等をかえることはできたのですが セルを結合する方法がわかりません。 よろしくおねがいします。

  • Excel(2010)で結合セル内で一部縦書

    Windows7、Excel(2010)で3つのセルを結合して3行の文書で2行目だけを縦書にしたいのですが、フォントの前に「@」をつけて縦書にしても180度回転(天地逆)になるだけで、縦方向に向いてくれません。 実例としては以下の様な文字列です。 1999.12  ~ ←これを縦方向にしたい 2013/10 セルを結合しなければ良い話なのですが、結合したままでデータを作成する必要があるので、どなたかご存知でしたらご教示をお願いします。

  • エクセルの並び替えで、タイトル行があるときとセル結合があるときにうまくいかない。

    エクセルのデータ並び替えで2点質問がありますので、よろしくお願いいたします。 エクセル2007とエクセル2003で実行してみましたが、結果は同じでした。 1.並び替えをする際に、先頭行をタイトルとして認識させると思うのですが、タイトル行が2行とか3行ある場合にはどうすればいいでしょうか? 先頭行以外がデータとして認識されてしまい、一緒に並び替えされてしまいます。 2.並び替えをしたくてもデータ中にセルの結合をしていると並び替えしてくれないようです。実際の現場ではセルの結合をしている表は結構あると思うのですが、セルの結合があるとやはり並び替えはできないのでしょうか?

  • EXCELでセルの結合をして

    EXCELでセルの結合をして 2セル 1セル 3セル の複数行 2セル 1セル 3セル 2セル 1セル 3セル 2セル 1セル 3セル 2セル 1セル 3セル 2セル 1セル 3セル の5行の2行目以降を1つ行を下げようと3行から5行を選択してコピーして4行目に貼り付けたらセルがすべて1セルになってセル結合がガタガタになるのですが、セル結合を維持した状態で行をずらす方法を教えて下さい。 行の追加だとそれ以降の右側のセルにもセル結合があるのでただ単に行の追加ではだめなんです。

専門家に質問してみよう