Excelには、隣接するセルをより大きな単一のセルにマージする機能が長い間含まれていました。この機能は、多くのワークシートデザイナーが、ワークシートを洗練されたプロフェッショナルな外観にするために使用しています。

ただし、結合されたセルを使用することには大きな欠点があります。それらを含むテーブルを並べ替えることはできません。試してみると、「操作には、結合されたセルのサイズが同じである必要があります」というメッセージが表示されます。

この問題の最も明白な解決策は、結合されたセルを使用しないことです。

たとえば、各「レコード」が実際には2つの行で構成されているワークシートがあり、ワークシートの最初の列に結合されたセルが含まれているとします。 (各2行のレコードは、2つの行にまたがる2つのマージされたセルで始まります。このマージされたセルにはプロジェクト名が含まれます。)

最初の列のセルのマージを解除することをお勧めしますが、ワークシートでレコードを適切に並べ替える方法がわからない場合があります。並べ替え中に行のペアをまとめる方法。これを行うには、最初の行にプロジェクト名を入力し、2番目の行にプロジェクト名に「zz」を追加します。たとえば、最初の行に「Wilburn Chemical」(プロジェクト名)が含まれている場合、2番目の行には「WilburnChemicalzz」が含まれる可能性があります。 2番目の行のセルをフォーマットして、名前が表示されないようにします(白い背景に白いテキストなど)。そうすれば、必要に応じて正常に並べ替えることができます。

もう1つの解決策は、マクロを使用してワークシートを調整し、並べ替えを実行することです。マージされたセルが列Aにあると仮定すると(前述のとおり)、次のマクロを使用して、列Aの内容でデータを並べ替えることができます。

Sub SortList()

Dim sAddStart As String     Dim rng As Range     Dim rng2 As Range     Dim lRows As Long

Application.ScreenUpdating = False     sAddStart = Selection.Address     Set rng = Range("A1").CurrentRegion

With rng         lRows = .Rows.Count - 1         .Cells(1).EntireColumn.Insert         .Cells(1).Offset(0, -1) = "Temp"

.Cells(1).Offset(1, -1).FormulaR1C1 = _           "=+RC[1]&"" ""&ROW()"

.Cells(1).Offset(2, -1).FormulaR1C1 = _           "=+R[-1]C[1]&"" ""&ROW()"

Set rng2 = .Cells(1).Offset(1, -1).Resize(lRows, 1)

Range(.Cells(2, 0), .Cells(3, 0)).AutoFill _             Destination:=rng2         rng2.Copy         rng2.PasteSpecial Paste:=xlValues

.Columns(1).MergeCells = False

.CurrentRegion.Sort _         Key1:=Range("A2"), Order1:=xlAscending, _         Header:=xlYes, OrderCustom:=1, _         MatchCase:=False, Orientation:=xlTopToBottom

rng2.EntireColumn.Delete

With Range(.Cells(2, 1), .Cells(3, 1))

.Merge             .Copy             .Cells(3, 1).Resize(lRows - 2, 1). _                 PasteSpecial Paste:=xlFormats         End With     End With     Application.CutCopyMode = False     Range(sAddStart).Select     Application.ScreenUpdating = True End Sub

マクロは、一時列を挿入し、リストの最初の列から項目を読み取り、行番号を追加し、それを一時列にコピーし、セルをマージ解除し、リストを並べ替え、一時列を削除し、列Aを再マージします。 (セルがマージされたテーブルを並べ替えるだけでも大変な作業です!)

このマクロはデータの特定のレイアウトに非常に固有であるため、他の方法でフォーマットされたデータで機能することを確認するために、テストしておそらく変更する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(761)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。