• ベストアンサー

EXCELで同じ値のセルを結合したいのですが。。。

よろしくお願いします。 OSはwindows2000で、EXCEL2000を使用しています。 A列内に数字が昇順に入っています。 数字によって、行数がばらばらで1~1000の値が入っていますが、全体では、5000行のデータです。 同じ値のセルを結合したいのです。 現状は、1から順に選択して、セルの結合しています。 早く出来る方法ありますか? よろしくお願いします。

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

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

セルの値に関係無いセルの結合を関数式で左右する(結合やその解除)ことは出来ません。従ってVBAにならざるを得ません。 A列が数値でその値順にソートされている場合 下記を実行すると出来るでしょう。 ツール-マクロ-VBE画面になり、メニューの挿入-標準モジュールの画面に下記を貼りつけ、実行する。 Sub test01() Application.DisplayAlerts = False d = Range("A65536").End(xlUp).Row m = Cells(1, "A") s = 1 For i = 2 To d If m <> Cells(i, "A") Then Range(Cells(s, "A"), Cells(i - 1, "A")).MergeCells = True s = i m = Cells(i, "A") End If Next i If i - 1 > s Then Range(Cells(s, "A"), Cells(i - 1, "A")).MergeCells = True End If Application.DisplayAlerts = True End Sub

2003tenn
質問者

お礼

ありがとうございました。 早速、やってみました。思い通りの回答でした。 うれしいです。 また、なにかありましたら、よろしくお願いします。

関連するQ&A

  • エクセルマクロでセルの結合をしたい

    エクセル2003です。 E列の値は昇順で並んでいます。 先頭E3行から下の行の値と比較し 同じ値の場合はセルを結合し 値が違う場合は結合しないで次の行を比較という処理を 最終行まで行いたいです。 (添付画像参照) 例えば E3-AA E4-BB E5-BB E6-CC E7-DD E8-EE E9-EE E10-EE E11-FF セルE4とE5を結合します セルE8とE9とE10を結合します。 次に結合した行と同じ行数のF列を結合します。 さらに結合した行と同じ行数のG列を結合します。 上記の場合 セルF4とF5を結合、 セルF8とF9とF10を結合します。 セルG4とG5を結合、 セルG8とG9とG10を結合します。 さらに結合した行と同じ行数のA列を結合します。 上記の場合 セルA4とA5を結合、 セルA8とA9とA10を結合します。 さらに結合したA列に数字を入力します A4とA5を結合したA4、A5セルには 2行を結合したので2と入力 セルA8とA9とA10を結合したA8、A9、A10セルには 3行を結合したので3と入力。 とりあえず、E列の結合を完成させてそのE列を 3行目から最終行までコピーして、 「形式を選択して貼付」の「書式」で 書式のみをF,G,A列にコピーすれば出来るのではと 以下の構文を作成しました。 セルの結合時は結合するセルの先頭の行の値が結合済セルの値に なるので最初にE列を結合していく時に A列に結合回数を記入しようと考えました。 ただ2行の結合は、A列に2と入力されたのですが 3行連結した時も2と入力されてしまったので改造しました。 テストデータでは期待しているようになったのですが 本番データでは結合される行が4行、5行等それ以上の行数が 結合する場合が有りこの構文ではなるべくしてなっているのですが 4行以上の行結合はA列の値はいずれも3になってしまいます。 (添付画像参照) どう修正すればいいか手段が考え付きません。 どのような方法がありますでしょうか? よろしくお願いします。 Sub セル結合2() '2013年10月25日 Dim 最終行 As Integer Dim 処理行 As Integer Dim 比較行 As Integer Dim 確認値 As Variant Dim 比較値 As Variant Dim 結合回数 Dim 戻行 Application.ScreenUpdating = False ThisWorkbook.Sheets("Sheet1").Select 最終行 = Cells(Rows.Count, 5).End(xlUp).Row 'F列の最終行を求めます。 Application.DisplayAlerts = False For 処理行 = 3 To 最終行 '3行目から最終行の前まで繰り返します。 比較行 = 処理行 + 1 '処理行の一つ下の行と比較します。→比較行とします。 確認値 = Cells(処理行, 5).MergeArea(1, 1).Value 'チェックする値を、確認値に代入します。 比較値 = Cells(比較行, 5) '比較する値を、比較値に代入します。 If 確認値 = 比較値 Then '値が同じかどうか Range(Cells(比較行, 5), Cells(処理行, 5)).MergeCells = True 結合回数 = Cells(処理行, 1) + 1 'セルを結合した回数 戻行 = 処理行 - 1 '処理行の1行上の行数を戻行とする Cells(処理行, 1) = 結合回数 '処理行のA列に結合回数を記入 Cells(比較行, 1) = 結合回数 '比較理行のA列に結合回数を記入 If Cells(処理行, 1) >= 3 Then 'もしも処理行のA列が3以上の場合 Cells(戻行, 1) = 結合回数 '戻り行のA列に結合回数をセット End If '同じでない場合は以下へ End If '同じでない場合は以下へ Next 処理行 Application.DisplayAlerts = True Application.ScreenUpdating = True Range(Cells(3, 5), Cells(最終行, 5)).Copy Range(Cells(3, 6), Cells(最終行, 6)).PasteSpecial Paste:=xlPasteFormats Range(Cells(3, 7), Cells(最終行, 7)).PasteSpecial Paste:=xlPasteFormats Range(Cells(3, 1), Cells(最終行, 1)).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False MsgBox "終了しました" End Sub

  • Excel マクロ 条件によるセルの結合

    テキストだとわかり辛いと思い、 画像を添付させていただきました。 3列の表があり、 A列に1~10までの数字(グループ名)を入力します。 これを、A列の数字が同じ場合、 B列とC列をセル結合したいのですが、 マクロで実現できるでしょうか? (行数は15行くらいあり毎日変わります) (最終行の次の行は空白です) (A列は結合してもしなくても問題ありません) Excel 2007 Windows10を使用しています。 おわかりの方がいらっしゃいましたら、 どうぞよろしくお願い致します。

  • エクセルの「数式が入った結合セル」を範囲指定して、値だけ貼り付ける方法。

    よろしくお願いします。 F列とG列のセルを結合させたセルが立てに10個あります。 10個のセルには、同じ行の「C列のセル/D列のセル」の数式が入っています。 収入割合が%表示で判るようになっています。 別のブックシートにこの10個のセルの値を転記したいと思い、範囲指定して「貼付」または「形式を選択して貼付(値)」しても、「この操作には同じサイズの結合セルが必要です。」となってしまいます。 貼付先は、別のシートのN列とO列を結合させて、貼付元と同じ幅のにした範囲指定した 10個のセルです。 なぜ、値の貼付が出来ないのでしょうか? (win2000 Excel2000)

  • 結合セルに結合していないセルの値を貼り付けたいです。

    結合セルに結合していないセルの値を貼り付けたいです。 シート1の1行目の[A1-B1-C1-D1]を結合しています。以下同じように[E1-F1-G1-H1]…のように4つづつ結合しています。 この行に、シート2のA1→B1→C1と続く結合していないセルのデータを貼り付けたいのですが、やりかたがわかりません。色々やってみたのですが、うまくゆきません。ご教授お願いいたします。

  • エクセル。あるセルに入っている値と同じ番号の行に

    A列に、1から3万くらいまでの大きさの連続しない値が入っているとします。 行数は1000行くらいです。 この数字のデータを、そのセルに入っている値と同じ番号の行に入れたいのです。 たとえばA列に上から、1、5、13、、、という数字が入っている場合、 A1に1、その後空白、A5に5、その後空白、A13に13、という具合です。 どのようにすれば良いでしょうか。 本当はA列以外に10列に値が入っていまして、 これらもA列の数字と一緒に移動させたいと思っています。 こういった場合に適用できる方法をお教え願えたら嬉しいです。 よろしくお願いいたします。

  • Excel VBAで結合セルに連番を振っていくには?

    Microsoft Excel 2003での質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、連番を振っていく作業をしています。 これをVBAを使って自動化したいのです。 列に連番がすでに入力されている最終行の下のセル(つまりこれから連番が入る空白セル)を選択、 範囲指定し(セル数はまちまちなのでこれは手作業)、 セルを結合させるまではできたのですが、 この結合させたセルに、[(一つ上の結合セル)+(1)]の値を入力させるにはどうプログラムしたらよいでしょうか? わかりにくい説明で恐縮ですが、どなたかご教示ください。

  • excel単一セルから結合セルに複写

    単一セルのものを結合セルに複写したいのですが、うまくいきません。 データーが約700行あるのです。 Aシートが単一セルでBシートが結合セル(縦に結合)になっていますが、 そのままコピーすると、当然結合が解除され、貼り付けられてしまいます。 「形式を選択して貼り付け・・」で、数式又は値等で貼り付けると、一行飛ばしで 貼り付けされてしまいます。 うまく貼り付ける方法がありましたら、教えていただきたいのですが・・・

  • Excel 結合について

    Excel2000を使用しています。 データが入っているシートがあります。 ある1つの列について、下の行を見て、次の文字があるところまで、次々とセルの結合を行いたいのですが、VBAを教えてください。 よろしくお願いいたします。

  • エクセルで結合したセルをグラフにしたい

    エクセルでグラフ(レーダーチャート)を作成するにあたって、複数のセルを結合した箇所を1データ(セル)として認識させたいのですが、結合前の空白のセルもカウントしてしまいます。 現在、具体的な「グラフ データの範囲として」 ='〇〇シート'!$M$19:$M$25,'〇〇シート'!$O$19:$P$25 となっておりますが、 どの列でも23、24行目を結合しているので、見た目は結合されているので あるはずのない24行目が認識されていて、レーダーチャート上で空白になってしまいます。 どうにかして24行目を外して計算したいのですがどのようにグラフのデータ範囲を選択すればいいのでしょうか?

  • エクセル:結合したセルの高さ自動設定

    EXCEL2000で結合したセルの高さ自動設定がききません。 結合したセルは ・文字の配置 横位置:左詰 縦位置:上詰め ・文字の制御 折り返して全体を表示 セルを結合する になっています。 セルを5つ結合して、その結合したセルの横幅を文字列が 越えたら次の行にいって、かつその折り返し部分が見えるように したいんです。 結合していない単体のセルの場合は、折り返され、かつ 折り返し部分が見えるように高さが変わります。 結合したセルでの高さ自動設定はできないのでしょうか? 教えてください。よろしくお願いします。

専門家に質問してみよう