プロが教えるわが家の防犯対策術!

違うサイズのセルを並べかえで同時に動かす。
当然エラーがでますが、何か良い案お持ちの方助けてください。

  A  B      C
1 東 1/27   あああああああああ
2 京        111111111111 
3 都         かかっっかかかかk

東京都と1/27のセルは3つを結合
C以降は 結合無し

例えば Bを日付で並べかえたい。 Cの三行も同時に移動させたいのですが、結合はできないのです。

A 回答 (4件)

並べ替えはデータベース機能なので、データーベース形式にのっとった形式にしなくてはいけません。


よって、印刷時などの見栄えを整えるための「セルの結合」は、使わないことです。

つまり、1件のレコードは1行に書く
 A     B     C         D       E
東京都  1/27  あああああああああ  111111111111  かかっっかかかかk


並び替えを行うためには、A・B列の結合を解く必要があり、
「その結合を解いてよいなら」妙案が出るかもしれません。
(推奨しないが)下記のような形
 A     B     C
東京都  1/27  あああああああああ
東京都  1/27  111111111111
東京都  1/27  かかっっかかかかk
    • good
    • 1

エラーになるのはセル結合しているから「ではありません」ので,



方法1:結果を出せる一番簡単な方法
既に気付いているとおり,例えばC列もC1:C3を結合して
あああALT+Enter
111ALT+Enter
かかか
としてデータを記入すれば,ABC列をB列基準で並べ替えできます。

「結合できない」と無い物ねだりするのなら,出来ないと諦めるしかありませんが,出来ない理由を解決するご相談を別途出してみるのも良い方法かもしれません。



方法2:セル結合したくないけど結果も欲しいなら
(ご質問で書かれているようにリストのタイトル行も用意していないレイアウトで)
D列に
D1: =B1
D2: =B1
D3: =B1
と入れてD1:D3をリスト下端までコピーし,
CD列をD列昇順で並べ替え(先頭行をデータと指定して並べ替えること)
AB列をB列昇順で並べ替える
と出来ます。
    • good
    • 0

こんばんは!



並び替えは行単位になってしまいますので、行によって結合あり・なしでは難しいと思います。

そこで方法として
(1)セルの結合を解除
(2)空白セルに一つ上のデータを入力
(3)B列の昇順で並び替え
(4)A・B列の3行おきに2番目・3番目のセルをクリア
(5)A・B列を3行ずつセルの結合

という操作をVBAでやってみました。
データは1行目からあるとします。

画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i, j As Long
Columns("A:B").UnMerge
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(i, 1) = "" Then
Cells(i, 1) = Cells(i - 1, 1)
Cells(i, 2) = Cells(i - 1, 2)
End If
Next i
i = Cells(Rows.Count, 1).End(xlUp).Row
j = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(1, 1), Cells(i, j)).Sort key1:=Cells(1, 2), order1:=xlAscending
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 3
Range(Cells(i + 1, 1), Cells(i + 2, 2)).ClearContents
Range(Cells(i, 1), Cells(i + 2, 1)).Merge
Range(Cells(i, 2), Cells(i + 2, 2)).Merge
Next i
Application.ScreenUpdating = True
End Sub 'この行まで

※ 尚、一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。
無理矢理って感じのコードです。m(_ _)m
    • good
    • 0

基本的に並べ替えは、すべての列が同じレイアウト(結合セルがある場合は同じ結合セル)になっていないと実行できません。



例示のデータで日付欄で並べ替えたいなら以下のような手順が最も簡単な操作だと思います。

日付またはA列の結合セルの範囲を選択して、右クリック「コピー」、C列のデータ範囲を選択して右クリック「形式を選択して貼り付け」で「書式」にします。

これでC列にはデータが残ったまま結合セルの状態になりますので、B列の日付で並べ替えることができます。
並べ替えた後で、C列を選択して、右クリック「セルの書式設定」の配置タブで「セルを結合する」のチェックを外します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!