- ベストアンサー
エクセル2003で複数の範囲から最小値を一括で求める関数について
- エクセル2003を使用して複数の範囲から最小値を一括で求める方法を教えてください。
- 具体的には、A列の数字の最小値をB列のa~b、b~c、c~dという感じで求めたいです。
- ハッシュタグ: #エクセル #最小値 #一括求める
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
B列には「-」を使わず、全ての行に、「a」とか「b」とかを入力することをお勧めします。そういう標準的なデータベースにしておけば、ピボットテーブルで一瞬で答えが出るし、数式を使う場合でも短い式で済むなど、何かと集計がラクです。「a」、「b」の代わりに「1」、「2」といった数字を使えば、更に便利になります。 書式など見栄えを気にする必要があるときは、印刷用のシートを別に用意されるといいでしょう。そこにどこからかリンクを貼っておいて、値を持ってくればいいだけです。 さてご質問の数式ですが、この手の計算は、作業列を使ったほうがラクです(添付図)。てゆーか1本の式で済まそうとするのは、立式にかなり骨が折れるので、あまり実用的とはいえないでしょう。 C1 =0+(b1<>"-") D1 =sum(C$1:c1) E1 =countif(d:d,d1) F1 =(c1<>0)*min(offset(a1,0,0,e1,1)) あとは、VBAを使って求めるくらいです。まあ一度きりの作業なら、VBAで特に早くなるとは思えませんが。
その他の回答 (4)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.4です。一つ、言い忘れました。何度もすみません。 F列の計算結果には、ゼロとなっているものがあるわけですが、ユーザー定義書式でこれを見えなくさせることができます。F列に対して、「セルの書式設定>表示形式タブ>ユーザー定義>種類ボックス」で、「G/標準;-G/標準;」などと入力するだけです。
お礼
回答ありがとうございます。 本当ですね。 こんな技もあるんですね。 勉強になりました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
C1セルには次の式を入力して下方にドラッグコピーします。 =IF(B1="","",IF(A2="",A1,MIN(A1:INDEX(A:A,MATCH(CHAR(CODE(B1)+1),B:B,0)-1))))
お礼
B列をアルファベット順にならべると 答えがでるような式なんですかね。 できてますね。 参考になりました。 ありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
1ブロックのデータ数が最大10件なら、C1セルに以下の式を入力して下方向にオートフィルコピーしてください。 =IF(OR(B1="",B1="-"),"",MIN(OFFSET(A1,0,0,SMALL(INDEX((B1:B10="-")*1000+ROW(B1:B10),),2)-1,1)))
お礼
回答ありがとうございます。 データ数は数千行になります。 参考にさせていただきます。 ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
B列にはご相談に書かれた通りに確かに-が記入されている前提で。 C1に =IF(OR(A1="",B1="-"),"",IF(B2="",A1,MIN(A1:INDEX(A:A,MIN(IF(B2:B99<>"-",ROW(B2:B99)-1)))))) のように記入し、コントロールキーとシフトキーを押しながらEnterで入力、下向けにつるつるっとコピーして埋めておきます。 #余談 ちなみにB列のabc以外、今は-が入っているセルを空っぽにしておいた方が、もう少し簡単な数式で出来る可能性があります。 ただしその時、B列には「実際にはabcが入ってるワケではない」場合は、現実にはどういう内容で記入しているのかキチンと事実を情報提供しないと、正しい数式の回答は寄せられません。特にこれ以上の回答はしませんが、もし興味があるなら別途新しいご相談として実際のデータを添えて、ご質問を投稿してみて下さい。
お礼
回答ありがとうございます。 余談で書かれたとおりの感じです。 できればコントロールキーシフトエンターではない やり方がいいのですが。。。 でもできてるので満足です。 ありがとうございました。
お礼
回答ありがとうございます。 いつもは分けてやってるんですが、今回は完全に お手上げだったので、質問させていただきました。 参考になりました。 ありがとうございます。