回答:
いいえ。自動フィルタリングする場合、範囲の最初の行を省略します。この方法で、自動フィルターボタンは下のヘッダー行にのみ表示され、データはフィルターされます。現在、2番目のヘッダー行が「データ」に取り込まれていることを期待しています。
単一のセルを選択して、これを把握することはできません。Excelに含めるセルの範囲を選択する必要があります。
(行の左側にある行番号を選択して)行全体を選択し、フィルターを有効にすると(データ>フィルター)、選択した行の下にあるすべてのフィルターが提供され、上の行はすべて無視されます。
さて、ファイルをExcel 2007として保存し、再度開いた後でも、Excel 2010では次のように動作します(おそらくExcel 2007でも動作します...)
3行のヘッダーを想定しています。スプレッドシートフィルターの範囲を[セル$ A $ 4から開始]に設定し、並べ替えるデータの範囲全体をカバーするようにします。ファイルを保存します。
以降、ソートは行1〜3をヘッダーとして処理するため、行4からのみソートされます。-フィルタ範囲を変更またはキャンセルしない限り...
StackOverflowではなくSuperUserを使用していますが、Excel 2016でVBAコードを使用することでこの問題の解決策を見つけることができます。
同様の(より複雑な)問題があります。
次の画面のキャプチャでわかるように、明示的な列にいくつかのフィルターを追加しますが、行1にのみ行2に追加します。
私は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
AutoFilterは、行1を除くすべての行のセルに対して生成されます。
C.一部の列のFILTER Comboboxを削除または非表示にする
Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False
列「C」のDropBoxは非表示です。
D.未結合のセルを結合して元の状態に戻す
Range("A1:A2").MergeCells = True
セルA1とA2が再び結合されます。
Excel 2007は、複数行ヘッダーがあるかどうかをスマートに検出できます。これを書く直前に簡単な実験をしました。
最初のソートを行う前に、ヘッダーのすぐ下にカーソルを置きます。それでおしまい!ソートは問題ありませんが、フィルタリングは問題ありません。Excelはヘッダーの1行目を無視しました。2行目を実際のヘッダーとして処理するだけです。
私は同じ問題を抱えていたので、誰もが貢献してくれたので、私にとってはこれまでのやり方になりました。
複数行ヘッダーの下に空白行を追加します(ヘッダーが5行の情報や奇数のセルサイズの場合、新しい空白行はRow6になります)。
Row6をクリックします(左端まで/実際に "6"(Excel行番号)をクリックして行全体を選択します/無限まで)。以下の#3と#4を完了するまで、他のセルをクリックしないでください。そうしないと、行の選択が解除されます。「選択済み」のままにしておきます。
[表示]タブに移動し、[ペインをフリーズ]> [フリーズ解除](最初にクリアしてクリアします)> [フリーズ]。これにより、5行のヘッダーと空白行(row6)もフリーズします。
「ALT」を押しながら、次のキーを押します:D、F、F(これは、シート上のすべてのフィルターをオン、オフ/オフにするショートカットです。
この時点から、このシートの使用に戻ってフィルターをオンにする必要がある場合(以前に何らかの理由でフィルターをオフにした場合)、>空白行を選択します(#2で説明)。>すべてのフィルターをオンにします(#4で説明)。
言葉が多すぎて申し訳ありませんが、何度かやってみれば、きっと気に入ってくれるでしょう(フィルターをたくさん使うなら)。
ステップ1下部のヘッダー行を強調表示します。そして、行のセルだけを選択することも、行全体を選択することもできます。
ステップ2次に、[ホーム]タブの[並べ替えとフィルター]をクリックし、[フィルター]を選択します。Excelは、すべての列名にフィルター矢印を追加します。
次に、ステップ3で矢印をクリックし、後でソートオプションを選択して、その列でテーブル全体をソートします。
ステップ4最後に、[並べ替えとフィルター]をクリックし、矢印を削除したいがフィルターによって定義された並べ替え領域を維持する場合は、もう一度[フィルター]を選択します。これで通常どおりに並べ替えることができ、Excelは余分なヘッダー行を無視します
私は同じ問題を抱えていて、自分に合った解決策を見つけました。ヘッダー内の見たくない行ごとに、文字を白(または背景色)にします。並べ替えると、行にすべて同じヘッダーが表示されません。何かを変更したい場合は悪くなりますが、その場合は明るい灰色にすることもできます。