誕生日にもらった意外なもの

建物の場所ごとの電力量が1行目に日付、A列には計測場所が入力されています。
     2/1  2/2  2/3  2/4  ・・・・・・
9階西
9階東
8階西
8階東
 ・
 ・
 ・
というような感じの表です。
この表の中から計測場所ごとの1ヶ月の使用量の多い3日と少ない3日を抽出した表を作りたいのですが(具体的には9階西は多い日順には2/23、2/10、2/15、少ない日順は2/13、2/9、2/1、といった具合に)、同じ使用量の日があると、それを別々に抽出する事が出来ません。
例えば2/4、2/16、2/28が同じ使用量でそれが1ヶ月の最大の使用量である場合には3日全てが2/4の表示になってしまいます。
色々調べましたがうまく出来ません。
関数はLARGE、SMALL、MATCH、INDEX、ROWなどを使っています。
質問内容が分かりにくい文章で恐縮しますが、とても困ってます。どなたか教えて下さい。
よろしくお願い致します。

A 回答 (3件)

電力量、日付、計測場所が入力されているワークシート名を Sheet1 とし、日付が入力されている範囲が B1:AF1 とする。


次のような作業用シートを2枚用意し、シート名をそれぞれ Best および Worst とする。
両方のシートにおいて、
セル A1 に式 =IF(Sheet1!A1="","",Sheet1!A1) を入力して、此れを下方にズズーッとドラッグ&ペースト
セル A1 を右方にセル AF1 までズズーッとドラッグ&ペースト

シート Best のセル B2 に式 =IF(Sheet1!B2="","",Sheet1!B2+COLUMN()/1000) を入力して、此れを右方にズズーッとドラッグ&ペーストした後で、範囲 B2:AF2 を下方にズズーッとドラッグ&ペースト

シート Worst のセル B2 に式 =IF(Sheet1!B2="","",Sheet1!B2-COLUMN()/1000) を入力して、此れを右方にズズーッとドラッグ&ペーストした後で、範囲 B2:AF2 を下方にズズーッとドラッグ&ペースト

例えば、Sheet1 のセル AH2 に次式を入力して、此れを右2列にドラッグ&ペーストすればベスト3の日付が得られる
=INDEX(Best!$B$1:$AF$1,MATCH(SMALL(Best!$B2:$AF2,COLUMN(A2)),Best!$B2:$AF2,0))

例えば、Sheet1 のセル AK2 に次式を入力して、此れを右2列にドラッグ&ペーストすればワースト3の日付が得られる
=INDEX(Worst!$B$1:$AF$1,MATCH(LARGE(Worst!$B2:$AF2,COLUMN(A2)),Worst!$B2:$AF2,0))
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
うまく出来ました。
お礼が遅くなり申し訳ありませんでした。

お礼日時:2010/02/28 17:10

こんばんは!


確かに同値がある場合は難しいですね!

無理やりって感じの方法になりますが、
↓の画像のように作業するための表を別に作ってそのデータから日付を表示させるようにしてみてはどうでしょうか?
今回は画像をアップするために同一Sheetに作成していますが、
実際は別Sheetに作成してもかまわないと思います。

ベスト(ワースト)も一つの表で日付を抽出できるとおもいますので、
とりあえず、ベスト(少ない)順にランクを表示させるようにしてみました。
同順位の場合は左側の列が上位になります。

画像のB9セルに
=COUNTIF($B2:$AF2,"<"&B2)+COUNTIF($B2:B2,B2)
という数式を入れ、オートフィルで列方向と行方向にコピーします。
(エラー処理はしていません)
これで少ない順のランクが表示されます。
このデータを下にSMALL関数・LARGE関数・INDEX関数・MATCH関数で日付が抽出できないでしょうか?

この程度で、お役に立てば良いのですが・・・
参考にならなかったら読み流してくださいね。m(__)m
「ベスト3(ワースト3)の抽出について」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
うまく出来ました。
お礼が遅くなり申し訳ありませんでした。

お礼日時:2010/02/28 17:10

以下のような配列数式で使用料の多い3日を表示することができます。



=INDEX($1:$1,SMALL(IF(LARGE($B2:$AC2,3)<=$B2:$AC2,COLUMN($B2:$AC2),""),COLUMN(A1)))

配列数式ですので入力後Ctrl+Shift+Enterで確定して右方向に3つオートフィルしてください。

使用量の少ない3日は以下のような式になります。

=INDEX($1:$1,SMALL(IF(SMALL($B2:$AC2,3)>=$B2:$N2,COLUMN($B2:$AC2),""),COLUMN(A1)))
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
うまく出来ました。
お礼が遅くなり申し訳ありませんでした。

お礼日時:2010/02/28 17:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!