
くわしい方、教えていただけないでしょうか?
ネットで検索しましたが、解決するような記事が見つかりませんでした。
添付画像のような表を作成しております(実際はもっと下にたくさん入力が続いてます)。
やりたいことは、この表にどんどんデータを入力していったときに、
グループバラバラなので、データの並べ替えでグループ名ごとにひとかたまりにして並べ替えたいのです(降順でも昇順でも、どちらでもいいです。でもできれば、グループ内で、氏名があいうえお順とかになるとすごく嬉しいです・・・・)
ですが、今の状態で並べ替えようとすると、「この操作には、同じサイズの結合セルが必要です」とエラーが出ます。
エクセルにあまり詳しくないですが、おそらくこれは、一人分のデータがA列とB列は1行ずつなのにC列で2行あるからだと思っているのですが、どうしても、C列は2行必要なので(誕生日のデータだけなら、D列に書けばいいのですが、C列にはほかにも書きたいデータがあってここは2行必要なんです)
この場合、どのようにしたら、うまく並べ替え(2行をひとかたまりと認識して)できるのでしょうか?
どなたかご教授してくださると嬉しいです。

No.1ベストアンサー
- 回答日時:
こんばんは!
並び替え・集計等々はセルの結合があると厄介ですね!
一番良いのはセル結合がない表を作り替えるコトなのですが、
すでに表が作成済みだとすると
一旦結合を解除 → 空白セルにもデータを入力 → 並び替え → セルの再結合
といった処理が必要になると思います。
これを手作業で!となると大変ですので、VBAでやってみました。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストし、Excel画面に戻ってマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub 並び替え() 'この行から
Dim i As Long
Application.ScreenUpdating = False
'セルの分割
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 2
With Cells(i, 1)
.UnMerge
.Offset(, 1).UnMerge
.Offset(1) = Cells(i, 1)
.Offset(1, 1) = Cells(i, 2)
End With
Next i
Cells(1, 1).CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, Header:=xlYes _
, key2:=Cells(1, 2), order2:=xlAscending, Header:=xlYes
'セルの再結合
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row - 1 Step 2
Application.DisplayAlerts = False
With Cells(i, 1)
.Resize(2, 1).Merge
.Offset(, 1).Resize(2, 1).Merge
End With
Next i
Application.ScreenUpdating = True
End Sub 'この行まで
※ 質問通りに1行目がタイトル行でデータは2行目以降にあり、A・B列は2行ずつ結合されているとします。
こんな感じではどうでしょうか?m(_ _)m
すごいすごい、あっという間にグループごとに並び変わりました!!すごすぎる。
わざわざコードまで書いていただいて、時間がかかっただろうにほんとにありがたいです。
とても助かりました!!
ありがとうございました!
No.4
- 回答日時:
基本的に一部に結合セルが混ざっている表をそのまま並べ替えることはできません。
例示の結合セルのデータなら以下のような操作で並べ替えを行うのが簡単かもしれません。
B2セル以下の結合されたデータ範囲を選択し、右クリックで右方向にオートフィルして「書式のみコピー」を選択します(通常のオートフィル操作を行い、右下に表示されるオートフルのオプションマーカーから選択してもよい)。
この状態で並べ替えを行い、最後にC列のデータ範囲を選択して右クリック「セルの書式設定」の配置タブで「セルを結合する」のチェックを外し元の表の状態に戻します。
この回答への補足
すみません、タイミングが悪く、下の方へのお礼を入力しているときに、MackyNo1が書き込んでくれたようで、気づかずに間違えて書き込んでしまいました。
すっとんきょうなお礼文、すみませんでした。
MackyNo1が教えてくれた方法も試してみます。ほんとにみなさん、知識が豊富ですごいです。
回答、参考にさせていただきます。
ご丁寧にありがとうございました。
ご丁寧な説明ありがとうございました。
ただ、私が書かなかったのが悪いのですが、入力用と表示用は分けずにやりたいです。
でも、今後の参考とさせていただきます。
ありがとうございます。
No.2
- 回答日時:
結合したセルを含む範囲を並べ替えたいと思ったら、一般機能だけで考えると
結合をすべて解除するか、全て同じ大きさに結合するかしかなさそうです。
ですので、次善の策としてお納めください。
とりあえず、図をご覧ください(見づらいかもしれませんが)。
便宜上(主にスクリーンショットを作るのが面倒だったので)1シートにしていますが、
実際は「入力用のシート」「表示・印刷用のシート」に分けて運用するイメージです。
上半分が入力用の表です。
> C列にはほかにも書きたいデータがあってここは2行必要
とのことですが、とりあえず表を横に伸ばす感覚で蓄積していきます。
つまり、A列にグループ、B列に名前、C列以降にその他データを入力します。
(例として、C列:学年・D列:誕生日・E列:その他情報 の3列で作っています。)
下半分に表示・印刷用の表を作りました。
単純に
・A列にグループ:=A2
・B列に名前:=B2
・C列に備考:=C2&CHAR(10)&D2&IF(E2<>"",CHAR(10)&E2,"")
としていますが、このC列が肝です。
入力用表の「学年・誕生日・その他」を結合し、1セルにまとめるための式です。
CHAR関数に関しては別途お調べいただきたいのですが、
要するにCHAR(10)でセル内改行が出来る、と盲目的に覚えるのも可です。
式中のIF以降は、E列が空白じゃなかったら改行してE列を結合、の意味で、
E列が空白じゃなかったら3行目を追加、E列が空白だったら2行で終わります。
F列以降が出来そうでも、&IF以降を増やすことで対応可能です。
これで行高を調整し、上下の文字位置を中央に持ってくると図のように見えます。
あとは、表示用のシートでグループごとに条件付き書式で色を付けると
質問文に添付くださったイメージに近づくものと思います。
肝心の並べ替えですが、
この場合は入力表を並べ替えると、連動して表示用の表も並び替わります。
入力表内にフォーカスを充て、データから並べ替え、「グループ」を昇順に設定、
レベルの追加をクリックして「なまえ」を昇順で追加してやれば、2項目での並べ替えが出来ます。
フィルタは入力用・表示用どちらでも可能です。
表を作り替えるのは手間かもしれませんので、
こんな考え方もあるよ程度の参考までに。

ご丁寧な説明ありがとうございました。
ただ、私が書かなかったのが悪いのですが、入力用と表示用は分けずにやりたいです。
でも、今後の参考とさせていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) 【エクセル】並び替えからの並び替え方法 7 2022/07/22 09:46
- Excel(エクセル) Googleスプレッドシートの割合の関数と円グラフの並べ替えについて 1 2022/07/22 17:31
- その他(Microsoft Office) Excel 2列分のDATAの並べ替え 1 2023/01/01 17:12
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- その他(Microsoft Office) エクセルで串刺ししたシートの並べ替えをしたいです 4 2023/02/14 11:59
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Excel(エクセル) エクセルでのマクロを使ったデータの並べ替え 3 2022/12/03 18:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excel 最新の日付の横のセルを...
-
エクセルで数値のセルだけ合計...
-
エクセルで曜日に応じた文字を...
-
数式が入ったセルを含めて、数...
-
「エクセル」特定の行(セル)...
-
スペースとスペースの間の文字...
-
エクセルの複数のセル均等に分...
-
平成○年○月○日午後○時○分 日と...
-
エクセルで表示されている数字...
-
セルの値 20071201123456 を...
-
Excel上でのデータ数字が連番で...
-
エクセルで縦一列を縦三列に並...
-
[Excel]計算式の結果が0の場合...
-
エクセル セル内の文字数を超え...
-
エクセル:文字結合+1文字削除...
-
特定の文字を打ち込んでそれに...
-
エクセルで、「ここ10試合の勝...
-
EXCELで日付と時刻のセルを結合...
-
フィルターかかってる時のSU...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
Excelでの検索結果を含む行だけ...
-
エクセルで曜日に応じた文字を...
-
「エクセル」特定の行(セル)...
-
エクセル:横長の表を改行して...
-
エクセルでセルの値分の個数の...
-
エクセルで表示されている数字...
-
スペースとスペースの間の文字...
-
列の数字に100をかけたい
-
エクセルで、毎日の走行距離(...
-
エクセルのsumifでかけ算してか...
-
時間を「昼間」と「夜間」に分...
-
エクセルのVLOOKUP関数について
-
Excelのセル内文字の並び替えに...
-
エクセルにデータを入力すると...
-
別のセルに値が入力されたら、...
おすすめ情報