
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
データが多いと重くなってしまうので、極力配列を使わない方法でやりますね。
説明文長いので、入力する必要のある所は★をつけておきますね。
D列の時間についてはどのようなデータ形式で入力されているのでしょうか?
A「1H」等と文字式が入っている
B「1」等と整数が入っていて、表示だけ「H」が加えられている
C「1:00」や「1:00:00」といった時間のデータが入っていて、表示上「H」となっている
どの場合でも計算できますが、簡単のためにBであるとして説明します。
D8で例えると、Aの場合は『D8』を『LEFT(D8,LEN(D8)-1)』とすることで、D8から右端の1文字を除いたデータになります。
Cの場合は『D8』を『HOUR(D8)』とすることで、時間の部分のみの数字を抽出することができます。
必要に応じて適応させてください。
①
平日とありますが、土日以外の祝日かどうかも判断するのでしょうか?
そうであるなら、祝日の一覧表が必要となります。
★仮にAA列に祝日一覧(祝日の日付)があるとします。
振り替えがある場合は、振り替え後の日付を一覧表に入力してください。
どこかの列に、その年月日が平日に当たるかどうかを表示する作業列があった方が便利ですね。
仮にL列にそれを表示するとします。
祝日かどうかも判断するなら、IFを2つ重ねて、WEEKDAYで曜日の判断をします。土日でなくて、更に祝日一覧とも一致しない場合に平日判定を、それ以外は休日判定を出します。
祝日は判断しなくて良いなら、IF1つとWEEKDAYだけで判断できますね。
★例:L8=IF(WEEKDAY(I8,2)<6,IF(COUNTIF(AA:AA,I8)=0,"平日","祝日"),"休日")
この式をI列のデータの数だけコピーしてください。
WEEKDAY(I8,2)はI8が月曜なら1~日曜なら7と表示するので、<6とすることで土日以外を条件とします。
なので『I8が土日なら"休日"、そうでなくてI8が祝日一覧になければ"平日"、祝日一覧にあれば"祝日"と表示する』という式になっています。
休日と祝日を分けた意味はありません。どちらも休日と表示しても問題ないです。
今後の式で平日かどうかを判断基準にするので、表示は休日でも祝日でも変わらないと考えます。
平日は9~18時ということですが、休日はどうするのでしょうか?
一応休日は時間指定なしの最大最小とした場合で考えてみます。休日は空白とするのであれば、変更はたやすいかと。
休日は休日で別の指定をする必要がある場合は、式を加工する必要があります。
9時~18時というのは式で直接入力しても良いですが、後で変更する場合のためにどこかに入力セルを作っておきましょう。
★仮にA1が開始時刻、A2が終了時刻、とします。D列同様数字のみが入っているものとします。
この時、MAXにしろMINにしろ、その範囲をどう指定するかというのが問題ですね。
J8,K8の例で説明すると、
I8の日付に関してのデータは、MATCH(I8,C:C,FALSE)とすることで、C列の中でI8と一致する一番上のセルのセル番号を入手することができます。
L8が平日でなければ、FまたはG列のこの行にあるセルが開始時刻のセルとなり、そのセルの23個下のセルが終了時刻のセルとなります。
L8が平日であれば、FまたはG列の、この行から「A1-1」だけ下のセルが開始時刻のセルとなり、「A2-1」だけ下のセルが終了時刻のセルとなります。
これを式で表せば、「開始時刻のセル:終了時刻のセル」という表示にできるので、INDIRECTを用いてこの文字列を参照セルの範囲として組み込むことができます。
★例:J8=MAX(INDIRECT("F"&MATCH(I8,C:C,FALSE)+IF(L8="平日",A$1-1,0)&":F"&MATCH(I8,C:C,FALSE)+IF(L8="平日",A$2-1,23)))
★例:K8=MIN(INDIRECT("G"&MATCH(I8,C:C,FALSE)+IF(L8="平日",A$1-1,0)&":G"&MATCH(I8,C:C,FALSE)+IF(L8="平日",A$2-1,23)))
これらの式をI列のデータの数だけコピーしてください。
おそらく求めた結果が表示されていると思います。
試してないので、問題があれば直しますので教えてください。
(できれば入力した式と、その結果表示されたものを記載してください)
②も同様です。
②
これは補助列を用いて、その数値との差がどれだけあるかを絶対値で表示させ、
指定期間内のそのデータで小さい順に5つ取り出せばよいということです。
出荷数というのは、合計(E列=1時間毎のMAXとMINの合計)のことでよろしいでしょうか?
であれば、H列に差を表示させるとして(邪魔であれば他のどこの列でもよいです)
★仮にA3に抽出したいデータの値(この場合2200)を入力するとして、
★仮にA4に抽出したいデータの開始日(この場合17年4月1日)を入力するとして、
★仮にA5に抽出期間の最終日の翌日(この場合17年5月1日)を入力するとして、
(最終日の翌日としたのは、1ヶ月毎であるなら末尾で変化するより翌日の1日で統一した方が分かり易いと判断した為です。1日からの1ヶ月固定であるならば、A5=DATE(YEAR(A4),MONTH(A4)+1,1)とすればA4に応じて自動入力されます)
★例:H8=IF(E8>A$3,E8-A$3,A$3-E8)
これをE列のデータの数だけコピーしてください。
これでE列のデータをA3と比較し、大きい方から小さい方を引いた値が表示されます。
抽出データをB1~B5に表示させるとします。
(ROW関数:セルの行番号を取得する関数。を使いますので、ROWの()の中は必要(=抽出データを表示するセル)に応じて修正してください)
★例:B1=SMALL(INDIRECT("H"&MATCH(A$4,C:C,FALSE)&":H"&MATCH(A$5,C:C,FALSE)-1),ROW()-ROW(B$1)+1)
B1をB2~B5にコピーしてください。
これでH列の「A4に一致する日付の一番上の行~A5に一致する一番上の行の1つ上の行」で「ROW()-ROW(B$1)+1」番目に小さい数値を表示します。
ROW()-ROW(B$1)+1というのは、そのセルが「B1を1行目として」何行目にあたるかを計算する式です。
表示するセルの先頭行が分かっていれば、ROW()-○と○に入る数字を固定させればいいのですが、不明である為-ROW(B$1)+1という式にしています。B$1という所を表示セルの先頭セルの番地に変えてください。行番号の前の$を付け忘れないように。
No.3
- 回答日時:
こんばんは。
まず、位置の確認をしておきます。4/1の始まりは、
[C8] ここが起点です。
①
私の場合は、補助列を作りました。
邪魔でしたら、どこか別の所にドラッグで移動すれば、数式は壊れずに済みます。
M8~下(M727)にコピー
=TEXT(C8,"mmdd")&REPT("0",3-LEN(D8))&D8
今は、見えやすいように、I1:K1
I1 J1 K1
区間/時間 08H 18H
I8
4/1 から、4/30 (シリアル値に限ります)
J8
=MAX(OFFSET($E$7,MATCH(TEXT(I8,"mmdd")&$J$1,$M$8:$M$1000,0),,MATCH(TEXT(I8,"mmdd")&$K$1,$M$8:$M$1000,0)-MATCH(TEXT(I8,"mmdd")&$J$1,$M$8:$M$1000,0)+1))
K8
=MIN(OFFSET($E$7,MATCH(TEXT(I8,"mmdd")&$J$1,$M$8:$M$1000),,MATCH(TEXT(I8,"mmdd")&$K$1,$M$8:$M$1000,0)-MATCH(TEXT(I8,"mmdd")&$J$1,$M$8:$M$1000,0)+1))
これで、4/30分まで、ドラッグ・コピーすれば、時間内の最大値と最小値は出せます。
平日以外は時間帯が変わる場合は、
=MAX(OFFSET($E$7,MATCH(TEXT(I15,"mmdd")&$J$1,$M$8:$M$1000,0),,MATCH(TEXT(I15,"mmdd")&$K$1,$M$8:$M$1000,0)-MATCH(TEXT(I15,"mmdd")&$J$1,$M$8:$M$1000,0)+1))
&$K$1 と &$J$1
をそれぞれ、&"08H" &"016H" と手書きで変えてあげてもよいと思います。
数式でも可能ですが、極端に長くなる可能性があります。
②
I J
2 中心値 2200 ←手書き
3 抽出 5 ←手書き
4 順位[ 12] ←計算
j4
=COUNTIF($E$8:$E$727,"<="&$J$2)
K2 ~K6
=SMALL($E$8:$E$727,INT($J$3/2)+ROW(A1)-1)
・
・
・


No.1
- 回答日時:
D列は「9:00:00」と入力しているのを書式設定で「9H」にしているということで良いでしょうか?
事前に別のセルに9H(9:00:00)と18H(18:00:00)を入力したセルを用意(下図L列)
(指定する時間を変更したければここを変更すれば可)
①平日だったら9Hから18Hの中での最大値、土日だったら24H全体の中での最大値
上記条件で。
データを作るのが面倒だったので範囲は省略してます。
列全体を指定すると重くなると思うので範囲は任意に修正してください。
=IF(WEEKDAY($I8,3)<5,MAX(IF($C$8:$C$19=$I8,$E$8:$E$19)),MAX(IF(($C$8:$C$19=$I8)*($D$8:$D$19>=$L$8)*($D$8:$D$19<=$L$9),$E$8:$E$19)))
ctrl+shift+enterで確定して{}つけます。
MAXのところをMINに変更すれば最小値も出ます。
②の近似値は指定した範囲を超えませんか?超えても可?

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- 数学 数1 二次関数 関数 y=x^2-2x-1について、定義域が-1<x<2のとき、最大値最小値を求めよ 5 2023/06/06 12:00
- 数学 高校数学について 関数y=-x^2+2x+c (xは0以上3以下)の最小値が-5であるときの定数cの 1 2022/10/01 09:52
- 数学 数学?算数の問題です どのような解答になりますか? 2 2022/04/22 04:46
- 数学 黄色マーカーの意味がよく分かりません。 X軸方向に4倍、Y軸方向に8倍に引き伸ばした らへんは何とな 3 2023/04/10 20:08
- JavaScript 最小二乗法 2 2023/01/01 20:57
- 数学 2*2の行列に対して固有値の最大実部を与えるkの値を求めたい 3 2022/11/08 16:26
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 再質問 エクセル「社員の重なっている仕事時間の算出方法について」教えてください。 10 2023/02/07 19:16
- 数学 条件付き極値問題といわれる問題です。ラグランジュの乗数法 について、質問したいことがあります。 条件 3 2023/05/15 21:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルのVBAで集計をしたい
-
【画像あり】オートフィルター...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
Office2021のエクセルで米国株...
-
エクセルの関数について
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】【配列】3つのシー...
-
他のシートの検索
-
【マクロ】オートフィルターの...
-
ページが変なふうに切れる
-
【マクロ】列を折りたたみ非表...
-
【関数】同じ関数なのに、エラ...
-
【条件付き書式】シートの中で...
-
【エクセル】期限アラートについて
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報