Note: The other languages of the website are Google-translated. Back to English

Excelでフィルタリングした後、最初に表示されるセルの値を見つけて取得するにはどうすればよいですか?

場合によっては、フィルターされたリストの最初の表示セルの値を取得する必要があります。 それを達成する方法は? この記事では、それを解決する方法を紹介します。

配列数式でフィルタリングした後、最初に表示されるセルの値を見つけて取得します
VBAでフィルタリングした後、最初に表示されるセルの値を見つけて取得します


配列数式でフィルタリングした後、最初に表示されるセルの値を見つけて取得します

次の配列数式を適用して、フィルターされたリストの最初の表示セルの値を取得できます。 次のようにしてください。

1.最初に表示される値を配置するための空白のセルを選択し、そのセルに次の数式を入力して、を押します。 Ctrlキー + シフト + 入力します キーを同時に押す。

=INDEX(C2:C19,MIN(IF(SUBTOTAL(3,OFFSET(C2,ROW(C2:C19)-ROW(C2),0)),ROW(C2:C19)-ROW(C2)+1)))

注意:数式では、C2:C19は、最初に表示されるセル値を返すフィルター処理されたリストであり、C2はリストの最初のセルです。 必要に応じて変更できます。

次に、上記のスクリーンショットのように、選択したセルに入力されたフィルター済みリストの最初の表示セルの値を確認できます。


VBAでフィルタリングした後、最初に表示されるセルの値を見つけて取得します

上記の配列数式を使用して、フィルターされたリストの最初の表示セルの値を取得するほかに、以下のVBAスクリプトを実行して、フィルターされたリストの最初の表示セルをすばやく返すことができます。 次のようにしてください。

1.フィルタリングされたリストの最初の表示セル値を配置するために、E8などの空白のセルを選択します。

2。 押す 他の + F11 キーを同時に開いて アプリケーション向け Microsoft Visual Basic 窓。

3。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール。 次に、以下のVBAコードをコピーしてモジュールウィンドウに貼り付けます。

VBAコード:Excelでフィルタリングした後、最初に表示されるセルの値を見つけて取得します

Sub FirstVisibleCell()
   With Worksheets("Sheet1").AutoFilter.Range
       ActiveCell.Value2 = Range("C" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2
    End With
End Sub

注意:コードでは、Sheet1はフィルタリングされたリストを含むシート名です。 「C」は、最初に表示される値を取得する列名です。 必要に応じて変更できます。

3。 プレス F5 キーを押してコードを実行すると、列Cにあるフィルター処理されたリストの最初の表示セルがすぐにセルE8に入力されます。


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (17)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
Excelで小計フィルタリングした後の最初の可視セル10個の値を見つけて取得する方法は?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、


Comofaçoparasaberonúmerodacélulatodavezquerealizoofiltroautomáticonovbavialoop?
exemplo、ao filtrar o valor 1、retornou as linhas 2、3e4。nopróximoloopfiltroovalor 2 e retorna as linhas 19、20、22。
Comofaçoparaqueeurealizar esse filtro eu pegue exatamente o valor da linha atual da linhadofiltroenãoovalordaprimeira linha da planilha?
ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
VBAの優れたモジュール、完全に機能しましたこれに感謝します!この投稿に感謝します!!!!
このコメントは、サイトのモデレーターによって最小化されました
この式が実際にどのように機能するかを誰かが説明できますか?

=INDEX(C2:C19,MIN(IF(SUBTOTAL(3,OFFSET(C2,ROW(C2:C19)-ROW(C2),0)),ROW(C2:C19)-ROW(C2)+1)))
このコメントは、サイトのモデレーターによって最小化されました
実行時エラー「91」オブジェクト変数またはブロック変数が設定されていない状態が発生し続けます。 私のワークシートはAllBrandsというタイトルのSheet1です。 これは私の公式です:

サブFirstVisibleCell()
ワークシート付き( "ALLBRANDS")。AutoFilter.Range
ActiveCell.Value2 = Range( "H"&.Offset(1、0).SpecialCells(xlCellTypeVisible)(1).Row).Value2
最後に

End Subの

どんな助けでも大歓迎です!
このコメントは、サイトのモデレーターによって最小化されました
こんにちはバブ、
私の場合、コードはうまく機能します。 どのExcelバージョンを使用していますか?
このコメントは、サイトのモデレーターによって最小化されました
残念ながら、#VALUEエラーを生成する式もVBAも機能せず、実行時エラー「1004」を生成します。
私はOffice2019を持っていて、特定のセルをフィルタリングするときにこれらの機能のXNUMXつが機能することを期待していたので残念です... :-(
このコメントは、サイトのモデレーターによって最小化されました
‌素晴らしい🌺XNUMX万人に感謝します🙏
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとう
このコメントは、サイトのモデレーターによって最小化されました
できます。 本当にありがとう...
このコメントは、サイトのモデレーターによって最小化されました
この数式は機能しますが、空白のセルがある場合、数式が誤動作し、フィルター処理された結果だけでなく、テーブル全体の最初の値を選択する可能性があることに注意してください。 私が見つけた回避策は、空白のセルをNULLまたはスペースに置き換えることでした。
このコメントは、サイトのモデレーターによって最小化されました
最初に空白がありました....その後、すべてのセルが埋められましたが、それでも#VALUE応答があります。 うまくいけば、この式はテキストでも機能します...! とにかくアドバイスをありがとう;-)
このコメントは、サイトのモデレーターによって最小化されました
だから私にとって、上記の答えは単にうまくいきません。 私は23行を超えるワークブックを持っており、これは何年にもわたって最適化に取り組んできたものです。 私の解決策は、今朝、さらに別のインスピレーションの火花で私にもたらされました。
TABLEを使用して必要なデータを取得していると仮定すると、次のようになります。XNUMXつの行(「Rownmbr」という名前)は、= CELL([@ [YOURFIRSTROW]])専用です。
テーブルの外で、どこかに数式を作成します:= INDIRECT(CONCATENATE( "A"; SUBTOTAL(105; Table1 [Rownmbr])))
「A」をデータを取得したい場所に置き換えるだけです。 私にとってこれはうまく機能し、ドキュメントをさらに詰まらせるのに使用するのは重い式ではありません。
このコメントは、サイトのモデレーターによって最小化されました
私はテーブルを使用していたので、このソリューションは私にとって完璧に機能しました。 指示に従うのは難しかったので、この説明がもう少し明確になることを願っています。
「Table_Name」という名前のExcelテーブルがあるとします。 まず、テーブルに新しい列を作成し、「RowNumber」という名前を付けます。 
その新しい列に、数式「= ROW([@ RowNumber])」を入力します。これにより、新しい列に次のデータが入力されます。
最初に表示される値を表示するセルに、数式「= INDIRECT( "A"&SUBTOTAL(105、Table_Name [RowNumber]))」を入力します。「A」は、必要な値を保持する列の文字です。戻る。
SUBTOTAL(105、...)関数は、指定された範囲内のすべての表示可能な行の最小値を返します。上記の場合、最初の表示可能な行の行番号が返されます。
INDIRECT関数は、指定されたセルアドレスのセルの値を返します。 これが、数式の最初の部分に、表示する列の列文字を含める必要がある理由です。 式のXNUMX番目の部分は、行番号を返します。


このコメントは、サイトのモデレーターによって最小化されました
arrayformula()を使用してGoogleスプレッドシートでこの数式を書くのを手伝ってくれませんか

{=INDEX(C2:C19,MIN(IF(SUBTOTAL(3,OFFSET(C2,ROW(C2:C19)-ROW(C2),0)),ROW(C2:C19)-ROW(C2)+1)))}
このコメントは、サイトのモデレーターによって最小化されました
次のVBAコードで、何を説明できますか SpecialCells(xlCellTypeVisible)(1) 平均? とは (1) 後に使用 SpecialCells(xlCellTypeVisible)?
ActiveCell.Value2 = Range( "C"&.Offset(1、0).SpecialCells(xlCellTypeVisible)(1).Row).Value2
このコメントは、サイトのモデレーターによって最小化されました
ありがとうございました!
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護