web-dev-qa-db-ja.com

Excelで複数行の並べ替え/フィルタリングヘッダーを取得する方法

ヘッダー情報に2行を使用するスプレッドシートがあります。列を選択することによるフィルタリングは、ヘッダー情報の1行のみを暗黙的に想定しています。ソートにはヘッダー行のチェックボックスがありますが、これは最初の行をヘッダーとして扱うことだけを切り替えます。

Excelに最初の2行をヘッダーとして処理させる方法はありますか?

いいえ。自動フィルタリングする場合は、範囲の最初の行を省略してください。このようにして、自動フィルターボタンが一番下のヘッダー行にのみ表示され、データがフィルターされます。今、あなたの2番目のヘッダー行があなたの「データ」に引っ張られていると思います。

単一のセルを選択してExcelでこれを計算することはできません。 Excelに含めるセルの範囲を選択する必要があります。

18
DaveParillo

複数のヘッダー行を使用してソート機能を実行する簡単な方法は、ソートする行の真上に空白行を挿入することです(理想的には、ヘッダーの一番下にあります。そうでない場合は、そうしてください。 )。次に、空の行を強調表示する「行」番号をクリックします。その行を右クリックして[非表示]を選択します。新しい空の行は消え、ヘッダーは見た目どおりになり、Excelはカテゴリ行をヘッダーとして解釈します。

7
George Cahill

行全体を選択し(行の左側にある行番号を選択して)、フィルターを有効にすると([データ]> [フィルター])、選択した行の下にあるすべてのフィルターが提供され、その上のすべては無視されます。

2
user291695

2行目に列見出しが含まれている2つのヘッダー行を含むリストをフィルター処理するには、次のようにします。

  • 最初の行をカット
  • フィルタリングをオフにする
  • 2番目の行がフィルタリングされるように、フィルタリングを再度オンにします。これにより、列見出しのある行がExcelに通知されます。
  • フィルターと列見出しを使用して、最初の行を行の上に貼り付けます。
  • 2行目に列見出しがあるフィルターが機能するかどうかを確認します。
1
PeterJHill

OK、以下はExcel 2010で機能します。ファイルをExcel 2007として保存して再度開いた後でも(Excel 2007でも機能すると思われます...)

3行のヘッダーを想定しています。スプレッドシートのフィルター範囲をセル$ A $ 4から開始に設定し、並べ替えるデータの全範囲をカバーするようにします。ファイルを保存します。

以降、並べ替えでは行1〜3がヘッダーとして扱われるため、行4以降のみが並べ替えられます。 -フィルター範囲を変更またはキャンセルしない限り...

1
deedgess

StackOverflowではなくSuperUserを使用していることはわかっていますが、この問題の解決策は、Excel 2016でVBAコードを使用することで見つかります。

同様の(より複雑な)問題があります。

次の画面のキャプチャでわかるように、明示的な列にいくつかのフィルターを追加したいが、行1には行2だけにフィルターを追加したくない。

enter image description here

Excel GUIを使用してみましたが、これは不可能に思われるため、次のコードを記述しました。

'********************************************************
'* SetFilter()
'********************************************************
'* PUBLIC method to call to define CUSTOM AutoFilter
'* on complex header.
'********************************************************

Sub SetFilter()
  'Compute last row number
  Dim nLast As Long
  nLast = Range("A" & Rows.Count).End(xlUp).Row

  'Lock screen update 
  Application.ScreenUpdating = False

  'Unmerge merged cells to allow adding filter
  Range("A1:A2").MergeCells = False
  Range("B1:B2").MergeCells = False
  Range("C1:C2").MergeCells = False
  Range("D1:D2").MergeCells = False
  Range("E1:E2").MergeCells = False
  Range("F1:F2").MergeCells = False

  'Add filter on row 2 and not 1  
  Range("A2:Z" & nLast).Select
  Selection.AutoFilter

  'Remove (or Hide) filter combobox for some columns
  Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False
  Selection.AutoFilter Field:=GetColumnIndex("G"), VisibleDropDown:=False
  Selection.AutoFilter Field:=GetColumnIndex("H"), VisibleDropDown:=False

  'Merge unmerged cells to restore previous state
  Range("A1:A2").MergeCells = True
  Range("B1:B2").MergeCells = True
  Range("C1:C2").MergeCells = True
  Range("D1:D2").MergeCells = True
  Range("E1:E2").MergeCells = True
  Range("F1:F2").MergeCells = True

  'Unlock screen update 
  Application.ScreenUpdating = True

End Sub

'********************************************************
'* GetColumnIndex()
'********************************************************
'* return column's index from column letters
'********************************************************

Function GetColumnIndex(sColLetter As String) As Integer
    Dim n As Integer: n = 0
    Dim iMax As Integer: iMax = Len(sColLetter)
    Dim i As Integer
    Dim sChar As String
    Dim c As Integer

    For i = 1 To iMax
        sChar = Mid(sColLetter, i, 1)
        c = 1 + Asc(sChar) - Asc("A")
        n = n * 26 + c
    Next

    If n = 1 Then
      n = 1
    End If

    GetColumnIndex = n
End Function

このコードのロジックは

A.行2にフィルターを追加できるように、垂直方向に結合されたヘッダーセルの結合を解除します

Range("A1:A2").MergeCells = False

セルA1とA2は結合されていません。

B.行2のすべてのセルにオートフィルターを追加する

Range("A2:Z" & nLast).AutoFilter

オートフィルターは、行1を除くすべての行のセルに対して生成されます。

C.一部の列のFILTERコンボボックスを削除または非表示にする

Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False

列「C」のDropBoxが非表示になります。

D.未結合のセルを結合して元の状態に戻す

Range("A1:A2").MergeCells = True

セルA1とA2が再び結合されます。

1
schlebe

私は同じ問題を抱えていたので、みんなの貢献が私に(今のところ)私のために働く方法へと導いてくれました。

  1. 複数行ヘッダーの下に空白行を追加します(ヘッダーが5行の情報や奇数のセルサイズの場合、新しい空白行はRow6になります)。

  2. Row6をクリックします(左端/実際には「6」(Excelの行番号)をクリックして行全体を選択します/無限に)。以下の#3と#4を完了するか、行を「選択解除」するまで、他のセルをクリックしないでください。 「選択」したままにしておきます。

  3. [表示]タブ> [ペインのフリーズ]> [フリーズ解除](最初にこれをクリアしてクリア)> [フリーズ]に移動します。これにより、5行のヘッダーと空白行(row6)が固定されます。

  4. 「ALT」を押したまま、次のキーを押します:D、F、F(これは、シート上のすべてのフィルターをオン/オフ/クリアするためのショートカットです。

  5. この時点から、このシートを使用するために戻ってこれらのフィルターをオンにする必要がある場合(以前に何らかの理由でフィルターをオフにした場合)は、>(#2で説明されているように)空白行を選択します。 >すべてのフィルターをオンにします(#4で説明)。

口数が多すぎて申し訳ありませんが、数回実行すると、たぶん気に入るはずです(フィルターをたくさん使う場合)。

0
JohnB

Excel 2007では、複数行のヘッダーがあるかどうかをスマートに検出できます。これを書く直前に簡単な実験をしました。

最初のソートを行う前に、カーソルをヘッダーの真下に置きます。それでおしまい!ソートはうまくいき、フィルタリングはうまくいきます。 Excelがヘッダーの1行目を無視しました。 2行目を実際のヘッダーとして処理するだけです。

0
thenonhacker

並べ替えが必要なセル(ヘッダーを除くすべて)を強調表示し、フィルターを選択します。

0
Laurah

Excel 2010を使用しています。見出し行(最初の4行など)を保持するには、行5を強調表示してからフィルターをオンにします。行1〜4はフィルターから除外されます。

0
Tony Bray

ステップ1一番下のヘッダー行を強調表示します。次に、行のセルのみを選択するか、行全体を選択できます。

ステップ2次に、[ホーム]タブの[並べ替えとフィルター]をクリックし、[フィルター]を選択します。 Excelは、すべての列名にフィルター矢印を追加します。

ステップ3次に矢印をクリックし、後でソートオプションを選択して、テーブル全体をその列でソートします。

ステップ4最後に、[並べ替えとフィルター]をクリックし、矢印を取り除き、フィルターによって定義された並べ替え領域を維持する場合は、[フィルター]を再度選択します。これで通常どおりに並べ替えることができ、Excelは余分なヘッダー行を無視します

0
pte coaching