ヘッダー情報に2行を使用するスプレッドシートがあります。列を選択することによるフィルタリングは、ヘッダー情報の1行のみを暗黙的に想定しています。ソートにはヘッダー行のチェックボックスがありますが、これは最初の行をヘッダーとして扱うことだけを切り替えます。
Excelに最初の2行をヘッダーとして処理させる方法はありますか?
いいえ。自動フィルタリングする場合は、範囲の最初の行を省略してください。このようにして、自動フィルターボタンが一番下のヘッダー行にのみ表示され、データがフィルターされます。今、あなたの2番目のヘッダー行があなたの「データ」に引っ張られていると思います。
単一のセルを選択してExcelでこれを計算することはできません。 Excelに含めるセルの範囲を選択する必要があります。
複数のヘッダー行を使用してソート機能を実行する簡単な方法は、ソートする行の真上に空白行を挿入することです(理想的には、ヘッダーの一番下にあります。そうでない場合は、そうしてください。 )。次に、空の行を強調表示する「行」番号をクリックします。その行を右クリックして[非表示]を選択します。新しい空の行は消え、ヘッダーは見た目どおりになり、Excelはカテゴリ行をヘッダーとして解釈します。
行全体を選択し(行の左側にある行番号を選択して)、フィルターを有効にすると([データ]> [フィルター])、選択した行の下にあるすべてのフィルターが提供され、その上のすべては無視されます。
2行目に列見出しが含まれている2つのヘッダー行を含むリストをフィルター処理するには、次のようにします。
OK、以下はExcel 2010で機能します。ファイルをExcel 2007として保存して再度開いた後でも(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
オートフィルターは、行1を除くすべての行のセルに対して生成されます。
C.一部の列のFILTERコンボボックスを削除または非表示にする
Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False
列「C」のDropBoxが非表示になります。
D.未結合のセルを結合して元の状態に戻す
Range("A1:A2").MergeCells = True
セルA1とA2が再び結合されます。
私は同じ問題を抱えていたので、みんなの貢献が私に(今のところ)私のために働く方法へと導いてくれました。
複数行ヘッダーの下に空白行を追加します(ヘッダーが5行の情報や奇数のセルサイズの場合、新しい空白行はRow6になります)。
Row6をクリックします(左端/実際には「6」(Excelの行番号)をクリックして行全体を選択します/無限に)。以下の#3と#4を完了するか、行を「選択解除」するまで、他のセルをクリックしないでください。 「選択」したままにしておきます。
[表示]タブ> [ペインのフリーズ]> [フリーズ解除](最初にこれをクリアしてクリア)> [フリーズ]に移動します。これにより、5行のヘッダーと空白行(row6)が固定されます。
「ALT」を押したまま、次のキーを押します:D、F、F(これは、シート上のすべてのフィルターをオン/オフ/クリアするためのショートカットです。
この時点から、このシートを使用するために戻ってこれらのフィルターをオンにする必要がある場合(以前に何らかの理由でフィルターをオフにした場合)は、>(#2で説明されているように)空白行を選択します。 >すべてのフィルターをオンにします(#4で説明)。
口数が多すぎて申し訳ありませんが、数回実行すると、たぶん気に入るはずです(フィルターをたくさん使う場合)。
Excel 2007では、複数行のヘッダーがあるかどうかをスマートに検出できます。これを書く直前に簡単な実験をしました。
最初のソートを行う前に、カーソルをヘッダーの真下に置きます。それでおしまい!ソートはうまくいき、フィルタリングはうまくいきます。 Excelがヘッダーの1行目を無視しました。 2行目を実際のヘッダーとして処理するだけです。
並べ替えが必要なセル(ヘッダーを除くすべて)を強調表示し、フィルターを選択します。
Excel 2010を使用しています。見出し行(最初の4行など)を保持するには、行5を強調表示してからフィルターをオンにします。行1〜4はフィルターから除外されます。
ステップ1一番下のヘッダー行を強調表示します。次に、行のセルのみを選択するか、行全体を選択できます。
ステップ2次に、[ホーム]タブの[並べ替えとフィルター]をクリックし、[フィルター]を選択します。 Excelは、すべての列名にフィルター矢印を追加します。
ステップ3次に矢印をクリックし、後でソートオプションを選択して、テーブル全体をその列でソートします。
ステップ4最後に、[並べ替えとフィルター]をクリックし、矢印を取り除き、フィルターによって定義された並べ替え領域を維持する場合は、[フィルター]を再度選択します。これで通常どおりに並べ替えることができ、Excelは余分なヘッダー行を無視します