• ベストアンサー

EXCELでセルを結合させる方法をお願いします

宜しくお願いいたします。 横へ31列、縦へ10行(H5とH6で1行)の表があります H5とH6両方には文字等入りません、このH5とH6、I5:I6のセルを31連続して結合させたいのです。 今はRange("H5:H6, I5:I6, J5:J6~AL5:AL6").Mergeこれを横へ31日分、縦へ10人分(H7:H8、I7:I8~)と長々としたものを使っています これですと走るのが遅いのですもっと短い構文でお願いしたいます 説明が下手ですいません

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

  • ベストアンサー
  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

cellsプロパティを使用してセル範囲を指定できます。 変数iは2行飛ばしになりますのでstep2で2行飛ばしになるようにしています。 H列は8番目なので変数jは8から開始するループにしています。 Sub test() Dim i, j As Integer For i = 5 To 23 Step 2 For j = 8 To 38 Range(Cells(i, j), Cells(i + 1, j)).Merge Next Next End Sub

関連するQ&A

  • VBAでセルの結合と分割(解除)をお願いします

    宜しくお願いいたします。 H5とH6のどちらかに数字か記号が入っています以下30個のセルも同様です、H6にデータを入れH5とH6を結合するとセルの認識はH5を認識するのでH6のデータは他へコピー出来ないので結合したセルを再度分割して一行に並び変えているのに下記の構文で実行しているのですが結合にかなりの時間がかかっています。分割は瞬時にできています。 お願いしたい件は即時もしくはなるべく早い方法がありましたらお願いいたします。 こんな感じで作りました Sub 結合() For a = 8 To 38 Range(Cells(5, a), Cells(6, a)).Select Selection.Merge Range(Cells(7, a), Cells(8, a)).Select Selection.MergeSub 以降29個    ・    ・    ・ Next a End Sub 分割() Dim range1 As Range Set range1 = Range("H5:AL5") range1.MergeCells = False Set range1 = Range("H7:AL7") range1.MergeCells = False 以降29個   ・   ・    ・ End Sub 良い方法をご伝授宜しくお願いいたします

  • 訂正します。(VBAでのセルの結合)

    先ほどは解りづらい文章ですいませんでした。 同じ内容ですが ABCD… ====… あアA- --B- -イC- --D- いウE- -エF- --G- うオH- -カI- --J- ---- ---- 上のような表で3列目のJを最終行とします。 列の“あ”から“い”の手前まで縦にセルの結合をしたいのです。 そして次ぎの“い”から“う”の手前まで。 そして最後に“う”も縦に結合したいのですが、Jが最終行になっていて“う”から最終行までへの結合のやり方をご教授頂きたいと思い質問させていただきました。 先ほどは回答頂いた方有り難うございました。

  • 二つのセルを結合させたセル間での計算について

    EXCEL2007の初歩的な計算式の導入方法について、お聞きします。 二つのセルを結合させたセル間での足し算、引き算を別なセルに 入れたいのですが、どうしたら良いのか、わかりません。 教えてください。   たとえば、セルCとセルDを結合させ、さらにセルGとセルHも結合さ せ、その結合セル間での和、差を別なセルJに表示させるような計算 式を、セルJに表したいのですが、うまくいきません。二つのセルを結 合させない単独のセル間での計算であれば、簡単にいくのですが。 ただ縦、横のSUMであれば、セルを結合させてもうまくいくようです。 このように、セルを結合させない、単独のセル間での計算であれば、 問題なく出来るようですが、レイアウト関係で、こう言ったセルを結合 させるような事になってしまいました。

  • エクセルのマクロで結合セルに値を貼り付けたい

    お世話になります。 マクロ初心者で本やネットで色々調べたのですが分からないため 教えていただけますと幸いです。 Sheet1にはB1:B3、B4:B6…と3行縦に結合された表があり、 Sheet2のA列には単独セルに商品の名前が入っております。 膨大な量のため、Sheet2のA列に入っている情報を Sheet1の縦に結合されたセルに一つずつマクロで転記したいと 考えております。 Range("B1:B100").Value = Range("A1:A100").Value のように記載すると、2個飛ばしで入力されてしまうので、 結合されている分飛ばされないで一つずつ転記したいのですが どのようにしたら良いでしょうか。

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

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

  • For文によるセル結合について

    A1:C1~G1:I1をFor文を使ってセル結合したいのですが 何故かうまく動きません。 For x = 1 to 9 step 3 Range("Cells(x,1):Cells(x+2,1)").Merge Next で試したのですがデバックエラーになり。 For x = 1 to 9 step 3 Range("x&1":"x+2&1").Merge Next でもエラーでした。 本にもCellを両方動かすサンプルが無くて困ってます。

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

    エクセル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

  • 以下のようなセルの結合って、どうすればいいのでしょうか?

    みなさん、是非教えて頂けないでしょうか。 エクセルで、以下のようにセルを即座に結合できる方法を探しています。 名前 お店 松本 A 松本 B 松本 C 鈴木 D 山口 F 山口 G 山口 H 山口 I 山口 J ↓ 名前 お店     A 松本 B     C 鈴木 D     F     G 山口 H     I     J 名前毎に、次の列の名前が変わったら、その連続している名前のセルを全て結合したいのです。 全部で約7500行、名前が500程あるので、中々手作業だと時間がとられて仕方ありません。 どなたか、お力を貸して頂けないでしょうか。 よろしくお願い致します。

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

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

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

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

専門家に質問してみよう