KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel で最初または最後の正の数/負の数を見つける方法は?

著者Xiaoyang変更日

正の数と負の数が混在する数値列を扱う際、範囲内の最初または最後の正の数(または負の数)を素早く特定したい場面はよくあります。この操作は、データ分析やトレンド検出、大規模データセットにおける特定のエントリーポイントの把握に特に役立ちます。手作業で大規模なデータを確認するのは非効率でミスも起こりやすいため、Excel ではこうした作業を効率化するための実用的な手法がいくつか提供されています。これにより、必要な正確な値を数式や自動化によって簡単に抽出できます。以下では、繰り返し操作や大規模運用に最適な高度なアプローチを含め、さまざまなシナリオに応じた複数のソリューションをご紹介します。

配列数式で最初の正の数/負の数を見つける

配列数式で最後の正の数/負の数を見つける

最初/最後の正の数/負の数を見つける VBA マクロ


青色の右向き矢印の吹き出し配列数式で最初の正の数/負の数を見つける

一連の値から最初の正の数または負の数を抽出するには、Excel の配列数式が活用できます。この方法は、アドインやマクロの使用が制限された環境で、中程度の範囲に対して素早く対応したい、かつ数式に慣れたユーザーに最適です。さらに、この配列アプローチはソースデータの変更に自動的に追随するため、動的なリストにもぴったりです。以下にその実装手順を示します。

1.空白セルを選択し、次の配列数式を入力して、最初の正の数を取得します。

=INDEX(A2:A18,MATCH(TRUE,A2:A18>0,0))

ここで、A2:A18は検索対象のデータリストを指します。この数式は、0 より大きい値を持つ範囲内の最初のセルを特定し、そのセルの内容を返します。下のスクリーンショットをご確認ください。

Excel で最初の正の数値を検索するためのデータセットを示すスクリーンショット

2.数式を入力したら、Enter キーを押す代わりに、Ctrl + Shift + Enterを同時に押してください。これにより配列数式が正しく実行され、リスト内の最初の正の数が以下の例のように返されます。

Excel で配列数式を使用して最初の正の数値を検索した結果を示すスクリーンショット

ヒント:最初の負の数を取得するには、次の数式を使用してください(入力後は、必ず)Ctrl + Shift + Enterを押してください)。

=INDEX(A2:A18,MATCH(TRUE,A2:A18<0,0))

どちらの数式でも、条件を変更することで()>0は正の数、<0は負の数)必要な数値タイプを簡単に指定できます。ただし、配列数式は空のセル参照に対応していないため、一貫した結果を得るにはデータ範囲に空白セルが含まれていないことを事前に確認してください。また、すべての数値が正または負のみの場合、数式がエラーを返す可能性があるため、エラーを抑制してカスタムメッセージを表示したい場合は、IFERROR 関数を追加することをおすすめします。

ご注意:最新バージョンのExcel(Office 365 およびExcel 2021 以降)では、Ctrl + Shift + Enterを使う必要がなく、Enterを押すだけで十分です。これは動的配列がサポートされているためです。


青色の右向き矢印の吹き出し配列数式で最後の正の数/負の数を見つける

列内の最後の正の数または負の数を特定したい場合は、別の配列数式を利用できます。このアプローチは、終了時点でのトレンドを素早く分析したり、指定したタイプの最新データポイントを確実に把握したりするのに最適です。さらに、この方法はデータの更新を自動で反映するため、新しい数値を定期的にリストに追加するシーンで特に役立ちます。

1.データ列の隣にある空白セルを選択し、次の配列数式を入力して、最後の正の数を見つけます。

=LOOKUP(9.99999999999999E+307, IF($A$2:$A$18 >0, $A$2:$A$18))

この数式は、非常に大きな数値に対して最後に見つかった数値を返すLOOKUPの動作を利用しています。IF($A$2:$A$18 >0, $A$2:$A$18)で正の数値のみをフィルタリングし、その後 LOOKUPがその中から最後に出現した値を返します。以下に図示します。

Excel で最後の正の数値を検索するための配列数式を示すスクリーンショット

2.数式を確定するには、Ctrl + Shift + Enterを押してください(ただし、お使いのExcel バージョンが動的配列をサポートしている場合はこの操作は不要です)。すると、指定範囲内にある最後の正の値が、以下の例のように表示されます。

Excel で配列数式を使用して最後の正の数値を検索した結果を示すスクリーンショット

最後の負の数を取得するには、次の配列数式を代わりに使用し、同様にCtrl + Shift + Enterを押してください。

=LOOKUP(9.99999999999999E+307, IF($A$2:$A$18 <0, $A$2:$A$18))

正の数も負の数も見つからない場合、数式はエラー()#N/A)を返します。このようなケースを適切に処理するには、数式をIFERRORで囲んでください。例:

=IFERROR(LOOKUP(9.99999999999999E+307, IF($A$2:$A$18 >0, $A$2:$A$18)), "No match found")

範囲内に結合セルやテキストと数値が混在した形式を使用すると、数式の計算結果が不正確になるおそれがあるため、ご使用はお控えください。最高の精度を得るには、これらの方法をご利用になる前に必ずデータの整合性をご確認ください。


青色の右向き矢印の吹き出し 最初/最後の正の数/負の数を見つける VBA マクロ

複数の範囲や非常に大規模なデータセットで頻繁に最初または最後の正の数・負の数を検索する必要がある場合、VBA マクロによる自動化が大幅な時間節約と手作業エラーの削減につながります。このソリューションでは、対象範囲を選択するだけで必要な値を即座に取得できるため、バッチ処理や繰り返し分析タスクに最適です。VBA によるアプローチは、複雑な条件やカスタマイズされたワークフローが求められるシナリオで特に有効ですが、Excel の開発者ツールに関する基本的な知識が必要です。

1開発Visual Basicをクリックして、Microsoft Visual Basic for Applicationsウィンドウを開きます。次に、VBA エディターで挿入標準モジュールをクリックし、次のコードを新しいモジュールにコピーしてください。

Sub FindFirstOrLastPosNegNumber()
    Dim rng As Range
    Dim cell As Range
    Dim result As Variant
    Dim firstPos As Variant, firstNeg As Variant
    Dim lastPos As Variant, lastNeg As Variant
    Dim selType As String
    
    On Error Resume Next
    Set rng = Application.InputBox("Select the data range", "KutoolsforExcel", Selection.Address, Type:=8)
    
    If rng Is Nothing Then Exit Sub
    
    selType = Application.InputBox("Type 'FirstPos' for first positive, 'FirstNeg' for first negative, 'LastPos' for last positive, or 'LastNeg' for last negative:", "KutoolsforExcel", "FirstPos", Type:=2)
    
    If selType = "" Then Exit Sub
    
    firstPos = Empty
    firstNeg = Empty
    lastPos = Empty
    lastNeg = Empty
    
    ' Find first positive and first negative
    For Each cell In rng
        If IsNumeric(cell.Value) Then
            If firstPos = Empty And cell.Value > 0 Then
                firstPos = cell.Value
            End If
            If firstNeg = Empty And cell.Value < 0 Then
                firstNeg = cell.Value
            End If
            If cell.Value > 0 Then
                lastPos = cell.Value
            End If
            If cell.Value < 0 Then
                lastNeg = cell.Value
            End If
        End If
    Next cell
    
    Select Case UCase(selType)
        Case "FIRSTPOS"
            result = firstPos
        Case "FIRSTNEG"
            result = firstNeg
        Case "LASTPOS"
            result = lastPos
        Case "LASTNEG"
            result = lastNeg
        Case Else
            result = "Invalid input"
    End Select
    
    If IsEmpty(result) Then
        MsgBox "No matching value found in the selected range.", vbInformation, "KutoolsforExcel"
    Else
        MsgBox "Result: " & result, vbInformation, "KutoolsforExcel"
    End If
End Sub

2.マクロを実行するには、F5キーを押すか(または)実行ボタン実行ボタンをクリック)て、次の手順に従ってください。

  • ダイアログボックスが表示されるので、数値範囲(例:A2:A18)を選択してください。
  • 次に、検索タイプを入力してください。FirstPosは最初の正の数、FirstNegは最初の負の数、LastPosは最後の正の数、LastNegは最後の負の数をそれぞれ指定します(大文字と小文字は区別されません)。
  • 選択内容を入力して確定すると、その結果がメッセージボックスに表示されます。

ヒント:

  • このマクロは、ユーザーが選択した連続する数値範囲を任意のサイズで処理でき、柔軟なデータレイアウトにも対応します。
  • 指定されたタイプが範囲内のどの数値とも一致しない場合は、エラーではなく通知が表示されます。
  • VBA コードを実行するには、Excel でマクロが有効になっていることをご確認ください。
  • データに数値以外の値が含まれている場合、マクロは処理中にそれらを自動的に無視します。

 

トラブルシューティングとおすすめポイント:すべての解決策を適用する際は、必ず選択範囲が目的のセル範囲を正確に含み、ヘッダー行が含まれていないことをご確認ください。特に大規模な範囲で配列数式やマクロを使用する場合は、計算やパフォーマンスの遅延を防ぐため、範囲サイズを必要最小限に抑えることを強くおすすめします。

この作業を頻繁に行う場合や、さらにカスタマイズしたい場合は、マクロ内で複数の条件を組み合わせたり、専用のボタンを設定してアクセスをよりスムーズにすることをご検討ください。新しい VBA スクリプトを試す前には必ず作業内容を保存し、プログラミング初心者の方はバックアップコピーを使ってテストを行ってください。


関連記事:

Excel で X より大きい最初/最後の値をどのように見つけますか?

Excel で行内の最大値とその値が含まれる列の見出しを取得する方法は?

Excel で最大値を検索し、その隣接セルの値を取得するにはどうすればよいですか?

Excel で条件に基づいて最大値または最小値を求めるには、どうすればよいですか?

最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 VLookup     複数シート間 VLookup      ファジーマッチ....
高度なドロップダウンリストドロップダウンリストをすばやく作成     連動型ドロップダウンリスト     複数選択可能なドロップダウンリスト....
列マネージャー指定した数の列を追加列の移動非表示列の表示状態を切り替え範囲および列の比較...
注目の機能グリッドフォーカス     デザインビュー   強化された数式バー    ワークブックとシートマネージャー     リソースライブラリ(オートテキスト)  日付ピッカー     ワークシートの統合    暗号化/セルの復号化    リストからメール送信     スーパーフィルター      特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除、...)   50+チャートタイプガントチャート、...)   40+実用的関数誕生日に基づいて年齢を計算します、...)   19 挿入ツールQR コードを挿入パスから画像を挿入、...)   12 変換ツール単語に変換する為替レートの変換、...)   7 結合と分割ツール高度な行のマージセルの分割、...)さらに多数
Kutools はお好みの言語でご利用いただけます。英語、スペイン語、ドイツ語、フランス語、中国語、および40+の他の言語をサポートしています!

Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。


Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします

  • Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!

すべてのKutools アドインが、たった1 つのインストーラーで完結。

Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得