• ベストアンサー

VBN セルの結合と、色分け

imogasiの回答

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

すでに2回答が出ているが、当方でもやってみたので、参考に。 例データ 質問例を使う Sheet2 A1:C21に、元データをコピーしてテストがよい。 1列目 2列目 3列目 a 1 5 a 1 5 b 1 6 b 1 6 b 1 6 b 1 7 b 1 7 b 1 7 b 1 7 c 2 7 c 2 7 c 2 7 c 2 7 c 2 7 d 2 6 d 2 6 d 2 6 d 2 6 d 3 6 d 3 6 ーー 大切な前提 A列を第Iソートキー B列を第2ソートキー でソートしてあるものとする。 ーーー 標準モジュールに Sub test02() Application.DisplayAlerts = False Dim flg As Boolean flg = True Set sh1 = Worksheets("Sheet2") '-- lr = sh1.Range("a10000").End(xlUp).Row ´MsgBox lr '--初期設定 mk = sh1.Cells(2, "A") & "-" & sh1.Cells(2, "B") 'A列+B列キー s = 2 'スタートデータ行 r = 1 '結合範囲の行数 '---´各行で上行から繰り返し処理 For i = 3 To lr k = sh1.Cells(i, "A") & "-" & sh1.Cells(i, "B") If k = mk Then 'A列とB列文字列組み合わせで、変わったかどうから r = r + 1 Else '---変わった sh1.Range("A" & s & ":A" & s + r - 1).MergeCells = True sh1.Range("B" & s & ":B" & s + r - 1).MergeCells = True sh1.Range("A" & s & ":C" & s + r - 1).Borders(xlBottom).LineStyle = xlSingle '---塗りつぶしの色 If flg = True Then sh1.Range("A" & s & ":C" & s + r - 1).Interior.Color = rgbYellow Else sh1.Range("A" & s & ":C" & s + r - 1).Interior.Color = rgbPink End If flg = Not flg '反転 '-- s = i r = 1 End If mk = sh1.Cells(i, "A") & "-" & sh1.Cells(i, "B") Next i '--データが終わった最後の後じまい sh1.Range("A" & s & ":A" & s + r - 1).MergeCells = True sh1.Range("A" & s & ":A" & s + r - 1).MergeCells = True sh1.Range("B" & s & ":B" & s + r - 1).MergeCells = True sh1.Range("A" & s & ":C" & s + r - 1).Borders(xlBottom).LineStyle = xlSingle '--- If flg = True Then sh1.Range("A" & s & ":C" & s + r - 1).Interior.Color = rgbYellow Else sh1.Range("A" & s & ":C" & s + r - 1).Interior.Color = rgbPink End If '---- Application.DisplayAlerts = True End Sub ーーー 塗りつぶしの色は黄色とピンクのような、薄い色にしている。 その他の色にするなら、WEBで「VBA 塗りつぶし色 RGB」で調べてください。 テストを繰り返す場合は、例えば下記を使ってクリアするとよい。 Sub test03() Set sh1 = Worksheets("Sheet2") '--テスト時用 sh1.Cells.Clear sh1.Range("a1:C10000").MergeCells = False sh1.Range("a1:C21").Interior.Color = xlNone End Sub ーー 実行結果 下記は回答記事では、列が崩れるかも(もちろん色は出ていない)しれないので、自分の実行結果の方を見てください。 1列目 2列目 3列目 a 1 5 5 b 1 6 6 6 7 7 7 7 c 2 7 7 7 7 7 d 2 6 6 6 6 d 3 6 6

kometoshi555
質問者

お礼

解説もつけていただいてありがとうございます。 わかりやすかったです。

関連するQ&A

  • 変わった方法でセルの結合をしたい

    画像の左のような表で、横4つのセルの結合をしたいのですが、結合した後にいずれかの数字を残すのではなく、右の表のように数字を左からくっつけたものが欲しいです。 結合して元の表が無くなってもかまいませんし、新しく列を作ってそこに出力しても良いです。 どなたか、方法をご教授願えませんでしょうか。

  • エクセルのセル結合の後

    エクセルの「セルを結合して中央揃え」した文字列を、左詰めにする方法を教えてください。 宜しくお願い致します

  • MSFlexGridでのセル結合について

    お世話になります。 MergeCellsにてセルを結合したのですが、結合したセルの文字位置が左詰になってしまいます。 中央揃えにしたいのですが、どなたか解るかたご教授願います。 宜しくお願い致します。

  • 結合されたセルの一覧出力 VBA

    お世話になります。 結合されたファイルの一覧を出力したいと思っています。 (できれば、変数に出力したいです) 表があり、ばらばらな範囲で結合されています。 結合した部分には、日付が入っています。 日付が入っている列は、B列とH列で、 その中で「AA」「BB」と入力されている結合セル以外の 結合セル範囲?行?を取得したいと思っております。 B列とH列の結合セル行が同じではありません。 B列は、B5:B13、B18:B25、B30:37 (それ以外のセルは結合してあっても、「AA,BB]と書いてある H列は、H6:H13,H18:H25、H30::H35,H36:H40(上と同じ) ということになっております。 できれば、 1.セル結合範囲を検索(行数取得?) 2.セルの内容が日付かどうか確認 3.日付なら、セル行数を取得 ということがしたいです。 日付の形式は、3/1などのように入っています。 このフォームが結構変わるため、 結合しているセルの中身が日付かどうかを確認し、 日付なら行数取得→色んなプログラムでその行数を使用 したいと思っています。 分かりにくい部分が多いかと思いますが、 回答お願い致します。

  • エクセル95か97でセルを結合できない

    人のPCで一瞬しかさわってないのでエクセル95か97のどちらかわかりませんでした セルを結合しようとして、横に連続した3つのセルを選択して右クリック、セルの書式設定、配置と進みましたが、「セルを結合する」の部分が灰色になっていて結合できないようになっていました ツールバーの「セルを結合して中央に揃える」のボタンも同じく灰色で押せない状態になっていました どうしてそうなったのか分かりません 何か設定をしたのでしょうか

  • エクセルのセル結合

    エクセルのセル結合について教えて下さい。 静岡県  静岡市あああ町5-32 あああビル111号 と言う風に、みっつの列にデータが入っています。 この列を一つに結合して  静岡県静岡市あああ町5-32あああビル111号 としたいのですが、できません。結合しようとすると、一番左の列意外はデータが消えてしまいますと言われてしまいます。

  • エクセルのセル~結合セルへのコピーの仕方を教えて

    フォーマットのセルがありますが 結合セルで出来ています マクロの設定も含まれているようです Aの一列の中で上下2つのセルで一つになっています それが五行あります 左にはエクセルのもともとの枠の番号が1から10まであって Aの縦のセルの数は五行です そのAの縦に名簿のセルを例えば5名分貼り付けますと もともとの結合前のセルに戻って5行貼り付けられてしまいます 左にあるエクセルのもともとの枠の番号ですと1から5までに 貼り付けられるのです わたしはもともとの結合セルの5つのセルにはめ込みたいのですが いっぺんには出来ません 一つづつですとできます なぜなのでしょう 結合セルにまとめてコピーできる方法を教えてください マクロの設定はくずれてもあらかじめ消してもかまいません 私がしたいのは コピーして改めて作ったものの印刷だけです よろしくお願いします

  • 結合セルの足し算

    添付画像は、4月~3月までの時間数を合計しているものなのですが、 足し算の対象になっている各セルは1行2列でできていた2つのセルを結合したものになっています。 そのためなのか、2重に加算され、合計値が2倍になってしまっています。 このような箇所がところどころにできてしまいまして・・・ でも普段範囲していて数式で合計値を計算しているときは、こんなことはならなかったのです。 セルのプロパティとかをいじればいいんでしょうか・・・ 解決方法をご存じでしたら教えてください。

  • エクセル2007 結合セル

    エクセル2007 結合セル 下の画像のようなエクセルシートを 練習用に2枚作成しました。 上段が月の入力フォームで、 下段が各個人の営業成績表です。 ここで、下段の成績表の1行目が B列からI列まで、セル結合されており その中に表題の( 月分)が表示されています。 ここの月の前の空白部分に上段の入力フォームの黄色で 入力した月の数字をを自動的に表示させることはできるのでしょうか。 結合させなければ、簡単にできたと思いますが、 結合している前提で、教えていただけるとありがたいです。 よろしくお願いします。

  • エクセルの結合したセル

    こんにちわ。 上下に結合したセルがAの列に並んでいます。A1、2で一つ、A2、3で一つというふうに。 そこに日付が入っています。 Bの列も同様にあり、そこには文字列が入っています。 それらを一つのセルにまとめたものを別のシートに作ろうと思いました。 文字列と日付なので&とTEXTを使い、うまくいったのですが、一番上を合わせて、下へスライドコピーしたらデータが飛び飛びになってしまいました。 結合した場合番地が上のセルの番地になります。A1,2なら番地はA1。 なのでA2には何も数値がないので、空白扱いとなってしまいました。 データ量が多いので、できればスライドさせて一気にやりたいのですが、なにかいい方法はありませんでしょうか? 難解な文章で申し訳ありません。。