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ランキング
-
エクセルで 自動的に◯や数字を...
-
【マクロ】2回実行したら、エ...
-
エクセルのツールバーから数値...
-
特定の文字列を含む、住所を抽...
-
Excel 2019 [オプション]の[リボンのユ...
-
祝日と土曜、日曜の合計をカウ...
-
EXCELの散布図で日付が1900年に...
-
マイクロソフトのPADを使ってい...
-
絶対参照
-
エクセルでCtrl+Tでテーブルの...
-
【マクロ】名前を保存する際に...
-
エクセルのクイックアクセスツ...
-
【マクロ】VLOOKUPにて参照元に...
-
Excel分数の表示について
-
【EXCEL】画像の黄色部分の抽出...
-
DATE関数で現在の年齢を出した...
-
Excelについて
-
マクロエクセルのブロック解除
-
Excelピボットテーブルの1行目
-
REGEXREPLACE関数について、
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報