Excelで最初/最後の正/負の数を検索するにはどうすればよいですか?
正と負の両方の値を含む数字の列を扱う場合、範囲内の最初または最後の正または負の数を素早く見つけたいことがよくあります。これは特に、データ分析、トレンドの検出、または大規模なデータセットでの特定のエントリーポイントを特定する際に役立ちます。大量のデータに対して手動で確認を行うのは非効率的であり、エラーが発生しやすくなります。幸い、Excelはこのタスクを効率化するためのいくつかの実用的な方法を提供しており、数式や自動化を使って必要な正確な値を抽出できます。以下では、繰り返しや大規模操作に理想的な高度なアプローチを含む、さまざまなシナリオに適した複数の解決策を紹介します。
配列数式を使用して最初の正/負の数を見つける
一連の値から最初の正または負の数を抽出するには、Excelの配列数式を使用できます。この方法は、追加のアドインやマクロが制限されている環境で、適度なサイズのデータ範囲に対して迅速な解決策が必要なユーザーに適しています。配列方式は、元のデータが変更されると自動的に更新されるため、動的なリストに非常に適しています。以下にその実装方法を示します:
1. 空白セルを選択し、次の配列数式を入力して最初の正の数を取得します:
=INDEX(A2:A18,MATCH(TRUE,A2:A18>0,0))
ここで、A2:A18は検索対象のデータリストを指します。この数式は、範囲内で0より大きい値を持つ最初のセルを見つけ、そのセルの内容を返します。次のスクリーンショットをご覧ください:
2. 数式を入力した後、Enterキーだけではなく、Ctrl + Shift + Enterを同時に押します。これにより、配列数式が正しく実行され、リストから最初の正の数が返されます。以下の例に示すように:
ヒント: 最初の負の数を取得するには、次の数式を使用してください(入力後、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
は最後の出現を返します。以下に図示されています:
2. 数式を確定するために、Ctrl + Shift + Enterキーを押します(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で条件に基づいて最大値または最小値を見つける方法は?
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパーLOOKUP:複数条件でのVLookup|複数値でのVLookup|複数シートの検索|ファジーマッチ…… | |
高度なドロップダウンリスト:ドロップダウンリストを素早く作成|連動ドロップダウンリスト|複数選択ドロップダウンリスト…… | |
列マネージャー:指定した数の列を追加 |列の移動 |非表示列の表示/非表示の切替| 範囲&列の比較…… | |
注目の機能:グリッドフォーカス|デザインビュー|強化された数式バー|ワークブック&ワークシートの管理|オートテキスト ライブラリ|日付ピッカー|データの統合 |セルの暗号化/復号化|リストで電子メールを送信|スーパーフィルター|特殊フィルタ(太字/斜体/取り消し線などをフィルター)…… | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など)|50種類以上のグラフ(ガントチャートなど)|40種類以上の便利な数式(誕生日に基づいて年齢を計算するなど)|19 種類の挿入ツール(QRコードの挿入、パスから画像の挿入など)|12 種類の変換ツール(単語に変換する、通貨変換など)|7種の統合&分割ツール(高度な行のマージ、セルの分割など)|… その他多数 |
Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...
Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に
- Word、Excel、PowerPointでタブによる編集・閲覧を実現。
- 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
- 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!
全てのKutoolsアドインを一つのインストーラーで
Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。





- オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得