• ベストアンサー

自動的にセルの結合

はじめまして。 質問させていただくのは始めてなので失礼がありましたら指摘して下さい。 永年の疑問っていうかテーマなんですが、 結合されているセルを解除すると 一番左上のセルのみに元データがでるんですが、 これを、 全てのセルに自動的に入力することって出来ないでしょうか? (   2   )(  3  )←結合されている     ↓       ↓ (2222222)(33333)←自動的にこうしたい ※結合されているサイズはバラバラです。 今は、セルの解除をして一つずつオートフィルをすることで対応していますが、量が多いので自動でやれないかなと思っています。 逆に、同じセルが連続していた場合、自動的に結合することは可能ですか? (2222222)(33333)     ↓       ↓ (   2   )(  3  ) という様に。 よろしくお願いします!

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

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

(1)セル結合を解除し、各セルに同一値をセット Sub test01() c = Val(InputBox("列を数字で=")) For i = 1 To 50 r = Cells(i, 1).MergeArea.Rows.Count DoEvents ' MsgBox i & "行" & r '--セル結合されているか If r <> 1 Then '--r行がセル結合されている-->解除 Range(Cells(i, c), Cells(i + r - 1, c)).MergeCells = False '--iからr行に同じ値をセット For j = i To i + r - 1 Cells(j, c) = Cells(i, c) Next j i = i + r - 1 Else End If Next i End Sub セル結合されている対象とする1つの列を聞いてくるから、A列は1、B列では2、・・と入力してください。 複数列あれば2度実行してください。 2列の結合は無いものとする。50行まで。上記の50を変えれば何行でも良い。 (2)同一値が縦に並んでおればセル結合する。 Sub test02() Application.DisplayAlerts = False c = Val(InputBox("列を数字で=")) '---初期設定 m = Cells(1, c) s = 1 r = 1 '-----第2行から50行まで For i = 2 To 50 If Cells(i, c) = m Then '--i行が直前セルと同じ r = r + 1 Else If r <> 1 Then If Cells(s, c) <> "" Then Range(Cells(s, c), Cells(i - 1, c)).MergeCells = True End If s = i r = 1 End If End If m = Cells(i, c) Next i Application.DisplayAlerts = True End Sub

G-ISZ
質問者

お礼

マクロ知識のあまりない私にも成功しました! これで、すっごく楽になるんです。 特に、(2)はかなり役立つことになりそうです。 ありがとうございます。 感動しました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

#2 の補足です。セルの選択範囲内に、結合セルや結合されていないセルが混在していても構いません。また、数も制限がありません。 >>逆に、同じセルが連続していた場合、自動的に結合することは可能ですか? >普通に連続セルを選択して、普通に結合するだけできますよ。 読み返して、私が勘違いしていることに気付きました。 「シート内の値が連続している範囲を自動的に結合する」ということでしょうか? そうであれば、諦めた方が良いと思います。VBAでやれなくはないでしょうが、できたとしても、処理に時間がかかりすぎて、恐らく使い物にならないでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 以前作成したマクロです。 セルの選択範囲内にある、結合されたセルだけを分割し、データで埋めます。 セルの選択範囲内の結合されていないセルに対しては、なにもしません。 ご参考までに。 'セル結合を解除し,データで埋める Sub unMergeCell()   Dim myRng As Range   Dim iCell As Range   Dim BUF As Variant   On Error GoTo ErrorHandler   Application.ScreenUpdating = False   Set myRng = Selection   For Each iCell In myRng     With iCell       .Select       If .MergeCells Then         BUF = .Value         .MergeCells = False         Selection.Value = BUF       End If     End With   Next iCell ErrorHandler:   Set myRng = Nothing   Application.ScreenUpdating = True End Sub >逆に、同じセルが連続していた場合、自動的に結合することは可能ですか? 普通に連続セルを選択して、普通に結合するだけできますよ。

G-ISZ
質問者

お礼

ありがとうございます!! マクロの知識はまだまだないのですが、 ない私にもしっかり活用するできました。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

とりあえず、1つの結合されたセルを分解するヤツを作ってみました。 結合されているセルをクリックしてマクロ実行を呼び出します。 Public Sub 分解() Dim r As Range, x As Range, v Set r = Application.Selection v = ActiveCell.Formula r.UnMerge For Each x In r x.Formula = v Next End Sub でたらめな範囲を指定して、その中にある結合された部分をやることもできるとは思いますが、省略。 繰りかえし実行する時はCTRL+Yで。 逆に、結合するのもできると思いますが、同じくでたらめな範囲から結合する部分を切り出すのが面倒なので省略。

G-ISZ
質問者

お礼

ありがとうございます。成功しました! ですが、、、もう少し自動的な感じはできないですかねぇ。。。 でたらめな範囲になると急に難しくなるんですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 結合されたセルに連番を振るには?

    Microsoft Excelでの質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、 昇順で連番を入力しようと、 いつものようにオートフィルでズリズリっとドラッグしようとしたところ、 「この操作には、同じサイズの結合セルが必要です」 と出てしまいました。 オートフィルを使用せず、このようなセルに連番を入力するにはどうしたらよいでしょうか? 色々と調べてみましたが自力では解決できませんでした。適当な関数があるような気もするのですが…。 ぜひご教示ください。よろしくお願いいたします。

  • EXCELでセルの結合にまつわるテクニック

    EXCELでセルの結合に関する2つの質問(+α)があります。 1.セルの結合を解除した際、セル内の元テキストは結合していた セルの中で一番上のセルにのみ残りますが、その下のセルにも同じものを 一括で反映させるための関数はどのようなものが適当でしょうか? 2.どうしても見栄えのためにセルの結合をしたいことがありますが そうすると並び替えができず不自由です。解決法はないのでしょうか? α.上記作業中に疑問に感じた余談ですが、オートフィルを使うと 連続データになるときと同じデータが反映される場合があり、 どういう場面で使い分けられているのかわかりません・・ 以上、いろいろと申し訳ございませんがご指導よろしくお願いいたします。

  • excelでセル結合したセルにリンクを張りたい

    タイトルの通りですが book1に商品名だけのデータが入力されています book2の表で 2つのセル結合したセルが 連続で40件あり その1つのセルに book1の商品名をリンク張り付けし オートフィルでコピーしたいのですが うまくいきません (1つ目のをコピーしてしまい 同じデータが入ってしまいます なにかよい方法はありますか??? 関数を使用したほうが よいでしょうか

  • 結合のセルで並べ替えできない、その解決法。

    Windows2000です。エクセルで作った表を行8を最優先に並べ替えたいです。 並べ替えの設定をしたら、「この操作は、同じサイズの結合セルが必要です」のブラウザが出て来ます。結局並べ替えてくれないです。 確かに、この表で結合にしているセルは多いですが、結合は解除したくないので、こういう情況ですが、自動並べ替えは無理でしょうか。解決法をご存知の方是非教えていただきたいです。よろしくお願い致します。

  • VBA 結合されているセルのオートフィル

    先程同じような質問をしてしまい すいませんが 結合されているセルのオートフィルのやり方が今一つわかりません でしたので質問させていただきます。 やりたいこと A列・・・A1セル『1』A2セル『2』・・・A10セル『10』と 数字が入っています。 BとC列・・・結合されており B1C1セル『1000』B2C2セル『1100』と数字が入っています。 F1セル・・・1~10までの数字が入っています。 処理内容 F1セルに『5』と数字が入っている場合 B5C5セルを選択後、数字が入っているB2C2セルまで移動します。 そのあと、B5C5セルではなく B4C4セルまで『1100』とオートフィルしたいのですが 可能でしょうか。 それともこのような処理をしたい場合オートフィルをするのは 間違っているのでしょうか? すいませんがコード記載していますので 回答宜しくお願い致します。 コード Sub Macro1() Dim a As Variant Dim i As Variant Dim RSta As Long Set a = Range("F1") '検索値'例えば5と入力したら For i = 1 To 10 If a.Value = Cells(i, 1).Value Then 'F1セルに5と入力されA5セルの数字が5なら If Cells(i, 2) = "" Then 'B5セルの値が何もなければ RSta = Cells(i, 2).End(xlUp).Row 'ここでBとCセルの結合されているセルの数字が入っている 一番上のセルを選択し Range("B" & RSta, "C" & RSta).AutoFill Destination:=Range("B" & RSta, "C"), Type:=xlFillCopy 'このコードが間違っているらしくうまくできません。ここでBとCの結合されているセル2行目から4行目までをオートフィル(数字のコピーのみを実施したい) End If End If Next i End Sub

  • Excelオートフィルとコピーについて

    改めて質問させていただきます。 左図のような表で、B2セル(B2とC2一緒の場合も)からオートフィルを使って右図にしたいのですが、 1.オートフィルを使うと連続データになってしまってCtrlを押しながらオートフィルを使い、罫線も種類が違うのでオプションで書式なしコピーを選ぶと連続データに戻ってしまいます。   この場合、オートフィルは使えないのですか?? 2.セルの結合が原因なのでしょうか?? 3.他にも方法はあるのですがオートフィルを使った方法が知りたいです。  よろしくお願いいたします。

  • Jakarta POI のHSSFで結合セル情報の取得

    http://www.okweb.ne.jp/kotaeru.php3?q=688039 「Jakarta POI のHSSFで 行列挿入、オートフィルを行いたい」 から引き続いての質問です。前質問についてもご回答をお待ちしております。 Jakarta POI(1.10.0) のHSSFを使用して、 Java(j2sdk1.4.1_02)サーブレット上でExcelファイルの入出力を行おうと試みております。 今回お尋ねしたいのは、結合セルの情報の抽出方法についてです。 現状、当方でわかっているのは、HSSFSheetクラスのgetNumMergedRegionsメソッドで シートに登録されている結合セルの件数を取得し、 対象の結合セル情報をHSSFSheetクラスのgetMergedRegionsAtメソッドで取得し、Regionクラス変数にセット。 対象の結合開始終了行列を個々に抽出するというものなのですが、 HSSFSheetに存在するすべての対象の結合セル情報を頭から舐める必要があります。 対象のセルが結合セルなのかを、明示的に指定し、取得できないのでしょうか。 オートフィルを行うメソッドを試作として作成し、テストしたところ、 セルの値、セル式()、セルの情報(HSSFCell)、書式(HSSFCellStyle)、フォント(HSSFFont)は個々のセルで取得できたので、フィルする先のセルに反映出来たのですが、 結合セルは上記設定のように対象セルを指定して、取得。とは簡単に出来ませんでした。 なにかよい方法はございませんでしょうか。 ご教授をよろしくお願いいたします。

    • ベストアンサー
    • Java
  • EXCELで、結合されたセルに連続して他のシートからセルの引用をしたい

    初めて「教えてgoo」を使用するため、説明不足かも知れませんがご容赦願います☆ EXCELで仕事用のデータ処理のテンプレートを作成していて不具合が起きて困っています☆ A列のセルは縦に三つずつ結合してあります。(A1~3、A4~6、A7~9・・・とそれぞれ結合してます) その結合してあるセルに、他のシートから順番になっているセルを引用したいのですが・・・ つまり・・・ A1~3の結合してあるセルに、=契約内訳書!A1、と引用して、 A4~6の結合してあるセルに、=契約内訳書!A2、と引用して、 A7~9の結合してあるセルに、=契約内訳書!A3、と引用して・・・ と続けたいのですが、オートフィルで入力しようとするとセルが結合してあるため、 =契約内訳書!A1、=契約内訳書!A4、=契約内訳書!A7と3つ飛びになってしまいます。 手入力すればいいのですが、この引用を何百行も行わなければいけないため、何か簡単な方法は無いかと思い書き込みしました。 説明が下手で申し訳ありませんが、どなたかお知恵を貸していただけないでしょうか? お願いします☆

  • Excelのオートフィルについて

    Excelで結合したセルにオートフィルで連続した値を入れたいのですが  (A1)と(A2)を結合して 「=Sheet2!B1」  (A3)と(A4)を結合して 「=Sheet2!B2」 と入力し  オートフィルで  (A5)と(A6)の結合に 「=Sheet2!B3」 としたいところ 「=Sheet2!B5」 になってしまいます。 うまく説明できないのですがいい方法があれば教えてください。 どうぞよろしくお願いします。

  • エクセルにて結合サイズが異なるセルに計算式を

    エクセルにて計算式をコピペしたいのですが、セルの結合サイズが異なるため貼りつけられないと出てきます。初めからそれを計算にいれて作成すれば問題ないのですが、他の方が別目的で作成したものを加工しなければならず困っています。明日までに作成しなければなりません。どなたか分かる方いないでしょうか。 同様の質問もありましたが、「セル結合解除すれば良い、もしくは出来ない」との回答がありました。何か良い方法はありませんでしょうか。

専門家に質問してみよう