
No.8ベストアンサー
- 回答日時:
No.7 の補足です
入力セルの選択を間違えて指示しました。ごめんなさい。B1:B10を選択してください。
A1からA10に適当なデータを入力してから、B1:B10を選択し、No.7に書いた式をコピーして貼り付け、確定するとき指示通りにして、B1:B10のセルに一度に
{=IF(ABS(A1:A10)=MIN(ABS(A1:A10)),A1:A10,"")}
が入力されれば完成です。
これで確かめる事が出来ますね。
ありがとうございました。
成功しました!
こんな方法がエクセルにあったなんて、新しい発見です。
何度もご親切に回答していただき、感謝いたします。

No.7
- 回答日時:
No.3 No5 の者です
=IF(ABS(A1:A10)=MIN(ABS(A1:A10)),A1:A10,"")
を入力する時のやり方が間違っていませんか。
式を入力する前に A1:A10 を選択しておかねばなりません。そして 上の式を入力して確定するときに、Ctrl キーと Shift キーを押しながら Enter キーを押します。これで10個のセルに同時に上の式を入れられます。(見た目には{ }でくくられた式が全てに入力されています)つまり引数にも配列、数式入力にも配列を使用した事になります。
少しセル範囲が多くてもShift キーを使ったり、引数のセル入力時も番地を覚えていてキーで入力するなどすれば、式の形がシンプルなので分かりやすいと思いますが。
No6 のかたのVBAも良いと思います。
ただ、-0.5と0.5の様なデータが最小値になった場合も考えなければならないのでしたら、更に付け足す必要がありますね。
何度もすみません。
式は、どのセルに入れればよろしいのでしょうか?
A1:A10を選択したとき、式はA1に入ってしまいます。
きっと、私の勘違いだと思いますが、あと、ちょっとでなので、是非、ご教示をお願いいたします。
No.6
- 回答日時:
ユーザー定義関数を作ってみました。
使い方
=nearZeroMin(A1:A10)
Function nearZeroMin(r As Range)
Dim x As Range, absMin, ret
ret = Application.WorksheetFunction.min(r) '仮の最小値
absMin = Abs(ret) '仮の最小値
For Each x In r
If absMin > Abs(x) Then
absMin = Abs(x)
ret = x
End If
Next
nearZeroMin = ret
End Function

No.5
- 回答日時:
N0.3の者です。
朝起きて見直したら前回のはさらに改良できました。
もっと多いデータにも対応できるように全てを配列引数にしました。
=IF(ABS(A1:A10)=MIN(ABS(A1:A10)),A1:A10,"")
データがA列に10個ある場合にしてあります。
これなら式の入力も簡単で、しかも前にも言いましたがいろいろな場合に対応します。
いろいろなデータを入力して確かめてください。

No.3
- 回答日時:
No.2の方の様に配列数式を使うのであれば、
A列の隣B列の3つのセル(B1:B3)を選択しておいて、次のように入力します。
=IF(ABS(A1:A3)=MIN(ABS(A1),ABS(A2),ABS(A3)),A1:A3,"")
確定時にCtrl キーと Shift キーを押しながら Enter キーを押すのを忘れないでください。
B列のどこかに小さい値が現れます。
これの良くないところは、同じ値があった場合同じものが2つ表示される事であり、又良いところは、最小値が-1と1のような場合にも対応できる事です。
データが沢山あるのでしたら、VBAの方がすっきりしますかね。
No.2
- 回答日時:
配列数式を使います。
仮に、
[A1]=-1
[A2]=-3
[A3]=+5
であるならば、任意のセルに
=INDIRECT(ADDRESS(MATCH(MIN(ABS(A1),ABS(A2),ABS(A3)),ABS(A1:A3),1),1))
この式を入れ、Ctrl キーと Shift キーを押しながら Enter キーを押します。
セルの数式は{}で囲まれます。
この数式の流れとしては・・・
(1)ABSで、各々の絶対値を取ります
ABS(-1)=1,ABS(-3)=3,ABS(+5)=5
(2)MINで、その中の最小の値を取ります。
MIN(1,3,5)=1
(3)MATCHで、A1:A3の中で(2)の値のあるセルの位置(何番目か)を取ります。
MATCH(1,ABS(A1:A3))=1(絶対値1と合致するのはA1:A3の"1"番目)
(4)ADDRESSで、A列の[(3)の値]行目のセルアドレスに変換します。
ADDRESS(1,1)=$A$1 前の「1」は(3)で求めたもの。後の「1」は「A列」を表します。
(5)INDIRECTで、(4)のセルアドレスにある値を拾います。
INDIRECT($A$1)=-1
参考になりますでしょうか。
ありがとうございます。例題はうまくいきました。
[A1]=+5
[A2]=-3
[A3]=-1 と数値を入れ替えた場合には、エラーになりますが、範囲指定をする場合、式のどこを変えれば良いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数の質問 5 2022/04/20 09:46
- Excel(エクセル) エクセル、日々の集計整理方法。(再送です。) 5 2022/10/02 00:19
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- Excel(エクセル) xlDownの使い分けについての質問です vbaでxlDownを使って一覧近い空白までのセルをコピー 3 2022/08/04 12:20
- Excel(エクセル) 数列の数値補間 2 2022/10/27 16:38
- 数学 教えてください。 2 2022/06/30 14:26
- Excel(エクセル) Aフォルダにあるエクセルの表をBフォルダへ映したい【表題じだけする】 2 2023/08/24 06:41
- Excel(エクセル) エクセルの関数で複数条件と数式を含む値の求め方について 1 2022/09/13 16:11
- Excel(エクセル) Excel 参照元の値を参照したい 1 2022/08/20 18:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルの循環参照、?
-
【関数】同じ関数なのに、エラ...
-
【マクロ】列を折りたたみ非表...
-
【マクロ】【配列】3つのシー...
-
【マクロ】アクティブセルの時...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】EXCELで読込したCSV...
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】A列にある、日付(本...
-
vba テキストボックスとリフト...
-
エクセル
-
【エクセル】期限アラートについて
-
Excel 複数のセルが一致すると...
-
【マクロ】WEBシステムから保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報