• ベストアンサー

VBN セルの結合と、色分け

kkkkkmの回答

  • kkkkkm
  • ベストアンサー率65% (1645/2495)
回答No.2

C列の6は分割しなくていいと思いますので以下のような感じでいかがですか。 色は同じ色がわからなので適当です。CellColorSetのところで変更してください。 Sub Test() Dim c As Range, d As Range Dim FRow As Long, MFRow As Long, MLRow As Long, i As Long Dim flg As Boolean: flg = False Application.ScreenUpdating = False Application.DisplayAlerts = False FRow = 2 Call DrawLine(1, 3, 1) For Each c In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)) If c.Value <> c.Offset(1, 0).Value Then Range(Cells(FRow, 1), Cells(c.Row, 1)).Merge Call DrawLine(1, 3, c.Row) If flg = False Then Call CellColorSet(1, FRow, 3, c.Row) flg = True Else flg = False End If FRow = c.Offset(1, 0).Row End If Next For i = 2 To 3 MFRow = 2 For Each c In Range(Cells(2, i), Cells(Rows.Count, i).End(xlUp)) With Cells(c.Row, 1).MergeArea MLRow = .Item(.Count).Row End With If MFRow = MLRow Then Range(Cells(MFRow, i), Cells(MLRow, i)).Merge Call DrawLine(i, i, c.Row) MFRow = c.Offset(1, 0).Row ElseIf MLRow <> c.Offset(2, 0).Row Then If c.Value <> c.Offset(1, 0).Value Or c.Row = MLRow Then Range(Cells(MFRow, i), Cells(c.Row, i)).Merge Call DrawLine(i, i, c.Row) MFRow = c.Offset(1, 0).Row End If End If Next Next Columns("A:C").HorizontalAlignment = xlCenter Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub Function DrawLine(ByVal FCol As Long, ByVal Ecol As Long, ByVal mRow As Long) With Range(Cells(mRow, FCol), Cells(mRow, Ecol)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .Weight = xlThin End With End Function Function CellColorSet(ByVal FCol As Long, ByVal FRow As Long, ByVal LCol As Long, ByVal CRow As Long) With Range(Cells(FRow, FCol), Cells(CRow, LCol)).Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.799981688894314 .PatternTintAndShade = 0 End With End Function

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には何も数値がないので、空白扱いとなってしまいました。 データ量が多いので、できればスライドさせて一気にやりたいのですが、なにかいい方法はありませんでしょうか? 難解な文章で申し訳ありません。。