エクセル2002、2003を使用してます。
下記のような場合、どのように式を作ればよろしいでしょうか?
A列に土日祝日以外の降順日付があります。(300~400行程度)
B列に順不同の整数があります。(日付の数と同数)※マイナスはありません。
また、A・B列の1~3行目程度にタイトル、項目名などの文字列もあります。
A B
2012/9/7 5897
2012/9/6 155
2012/9/5 826
2012/9/4 7402
上記から、特定期間内(例えば、2012/1/10~2012/2/10等)で、B列の最大値、最小値、F3のF4以上、F3のF4以下を求めたいです。
計算式はセル参照を使用したいので、下記のようにしました。
F1=開始日
F2=終了日
F3=整数
F4=パーセント数字
出来る限り自分で調べまして下記のような計算式まで近づけたのですが、日付が昇順だとこれで出来るのですが、降順だと正しく求められません。降順に対応するにはどこを訂正したらよろしいでしょうか?
最大値を求める式:=MAX(INDIRECT("b"&MATCH($F$1,A:A)):INDIRECT("b"&MATCH($F$2,A:A)))
最小値を求める式:=MIN(INDIRECT("b"&MATCH($F$1,A:A)):INDIRECT("b"&MATCH($F$2,A:A)))
また、F3のF4以上、F3のF4以下を求める式はまったく分かりませんでした。
どうかご教示下さいますよう宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
ご質問で挙げられたようなデータなのでしたら
最大値:
=MAX(INDEX(B:B,MATCH(F1,A:A,0)):INDEX(B:B,MATCH(F2,A:A,0)))
最小値:
=MIN(INDEX(B:B,MATCH(F1,A:A,0)):INDEX(B:B,MATCH(F2,A:A,0)))
のようにできます
もし実際のデータが「連続した日付ではない」場合は
最大値:
=MAX(IF((F1<=A1:A999)*(A1:A999<=F2),B1:B999))
と記入し、コントロールキーとシフトキーを押しながらEnterで入力
最小値:
=MIN(IF((F1<=A1:A999)*(A1:A999<=F2)*(B1:B999>0),B1:B999))
と記入し、コントロールキーとシフトキーを押しながらEnterで入力
といった具合にすることもできます
指定期間内であってF3*F4%以上の最小の数:
=MIN(IF((F1<=A1:A999)*(A1:A999<=F2)*(B1:B999>=F3*F4),B1:B999))
と記入し、コントロールキーとシフトキーを押しながらEnterで入力
指定期間内であってF3*F4%以下の最大の数:
=MAX(IF((F1<=A1:A999)*(A1:A999<=F2)*(B1:B999<=F3*F4),B1:B999))
と記入し、コントロールキーとシフトキーを押しながらEnterで入力
皆様、ご回答くださりましてありがとうございます。
皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。
お陰様でなんとか理想的な形にすることが出来ました。
ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。
私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。
私自身もとても勉強になりました。ありがとうございました!!
No.5
- 回答日時:
こんばんは!
一例です。
(F4セルはパーセント表示にしておきます)
↓の画像で説明します。
作業用の列を1列設けます。
作業列C2セルに
=IF(COUNTBLANK($F$1:$F$2),"",IF(AND(A2>=$F$1,A2<=$F$2),ROW(A1),""))
という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。
E7~H7はすべて配列数式になってしまいますので、Shift+Ctrl+Enterキーで確定します。
E7セルに
=IF(COUNTBLANK(F1:F2),"",MAX(IF(C1:C1000<>"",B1:B1000)))
F7セルに
=IF(COUNTBLANK(F1:F2),"",MAX(IF(C1:C1000<>"",B1:B1000)))
G7セルに
=IF(SUMPRODUCT(($B$2:$B$1000>=$F$3*$F$4)*($C$2:$C$1000<>""))>=ROW(A1),INDEX($B$2:$B$1000,SMALL(IF($B$2:$B$1000>=$F$3*$F$4,IF($C$2:$C$1000<>"",$C$2:$C$1000)),ROW(A1))),"")
H7セルに
=IF(SUMPRODUCT(($B$2:$B$1000<=$F$3*$F$4)*($C$2:$C$1000<>""))>=ROW(A1),INDEX($B$2:$B$1000,SMALL(IF($B$2:$B$1000<=$F$3*$F$4,IF($C$2:$C$1000<>"",$C$2:$C$1000)),ROW(A1))),"")
最後にG7・H7セルを範囲指定 → H7セルのフィルハンドルで下へコピー!
これで画像のような感じになります。
※ この画面から各セルにコピー&ペーストする場合、配列数式セルはそのままでは配列数式になりませんので
各セルに貼り付け後、数式バー内で一度クリック!
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
※ 極端にデータ量が多い場合、配列数式にするとPCにかなりの負担をかけてしまいます。
※ 作業列を使うのであればもう少し作業列を使って、配列数式にしない方法が良いかもしれません。
参考になりますかね?m(_ _)m
皆様、ご回答くださりましてありがとうございます。
皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。
お陰様でなんとか理想的な形にすることが出来ました。
ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。
私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。
私自身もとても勉強になりました。ありがとうございました!!
No.4
- 回答日時:
期間(F1,F2)がデータよりも上下にはみ出していても可、逆転も可(下へのはみ出しはMATCH関数の「照合の型」のお陰)
MAX:
=MAX(INDIRECT("B"&(MATCH(MIN(F$2,A$1),A:A,-1))):INDIRECT("B"&MATCH(MIN(F$1,A$1),A:A,-1)))
MIN:
=MIN(INDIRECT("B"&(MATCH(MIN(F$2,A$1),A:A,-1))):INDIRECT("B"&MATCH(MIN(F$1,A$1),A:A,-1)))
F3、F4を使った問題は意味不明、同じくMAX/MINなのか、数なのか?
F4(%)の定義も曖昧、1以下の値なのか、100までの値なのか?
いずれにしても補助計算列を使って検証を簡単にできるようにした方が賢明。
皆様、ご回答くださりましてありがとうございます。
皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。
お陰様でなんとか理想的な形にすることが出来ました。
ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。
私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。
私自身もとても勉強になりました。ありがとうございました!!
No.3
- 回答日時:
後順に対応させたいなら
MATCH($F$2,A:A)の照合の型 で -1を指定することが可能です。
MATCH($F$2,A:A,-1)と修正してみてください。
正し、開始日と終了日が実際にデータにない日を入力した場合などに
開始日、終了日を含むのか含まないのかで、微妙に答えが違うかもしれませんので、十分に検証してみてください。
>F3のF4以上、F3のF4以下を求める式はまったく分かりませんでした。
求めいたいのは、データの個数でよろしいでしょうか?
同様な式で COUNTIF関数で考えてみてはいかがでしょうか。
ただ、データ数もそうは多くないので、SUMPRODCT関数で総当たりに条件をあてはめてもそうは重くならないかと。
=SUMPRODUCT((A2:A400>F1)*(A2:A400<F2)*(B2:B400>F3*F4)*(B2:B400<F3*(1+F4)))
こんな感じでしょうか?
皆様、ご回答くださりましてありがとうございます。
皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。
お陰様でなんとか理想的な形にすることが出来ました。
ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。
私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。
私自身もとても勉強になりました。ありがとうございました!!
No.2
- 回答日時:
最大値
=MAX(OFFSET(INDIRECT("b"&MATCH($F$2,A:A,-1)),1,0):INDIRECT("b"&MATCH($F$1,A:A,-1)))
最小値
=MIN(INDIRECT("b"&MATCH($F$2,A:A,-1)):INDIRECT("b"&MATCH($F$1,A:A,-1)))
>F3のF4以上、F3のF4以下
とは、例えばF3が5000でF4が50%だと、F3×F4=2500以下、以上という意味でしょうか?
とすると、
以下の数式をCtrlキーとShiftキーを押しながらEnter
F3のF4以上の最小値
=MIN(IF((A1:A1000>=F1)*((A1:A1000<=F2)*(B1:B1000>=(F3*F4))),B1:B1000))
F3のF4以下の最大値
=MAX(IF((A1:A1000>=F1)*((A1:A1000<=F2)*(B1:B1000<=(F3*F4))*(B1:B1000>0)),B1:B1000))
皆様、ご回答くださりましてありがとうございます。
皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。
お陰様でなんとか理想的な形にすることが出来ました。
ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。
私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。
私自身もとても勉強になりました。ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) Excelで行削除をすると… 1 2023/07/26 11:57
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Excel(エクセル) Excel複数シートから日付と文字を取り出して日付順に並べたいです 6 2022/06/06 13:23
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- 数学 2*2の行列に対して固有値の最大実部を与えるkの値を求めたい 3 2022/11/08 16:26
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFとIFS関数
-
Excelを無料で使うには? パソ...
-
セルの数を求めたい
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
エクセルで「ページレイアウト...
-
エクセルの数式バーのフォント...
-
エクセルの関数について教えて...
-
エクセルでセルに標準で入力さ...
-
Microsoft1Officeの互換ソフト...
-
シフト表をエクセルで作るとき...
-
ユーザー定義関数をアドイン登...
-
Excel VBAで全ての矢印を赤色に...
-
VBA Private Sub Worksheet_Cha...
-
2列に入っているデータを1列...
-
Excelに詳しい方! B列が「日...
-
excel2013 MonthDays 関数が使...
-
エクセルのクイックアクセスツ...
-
Excelの数式について教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報