• ベストアンサー

Excelの関数について

エクセルで、最大値や最小値、平均値を出すとき、レコード数が多い時は範囲指定してMAX()等の関数を使うのが大変です。 種類    店名  売り上げ   最大値 ・・・・ ファミマ  ○店   100000円 ファミマ  ×店   100200円 ・ ・ ・ ローソン  ○店   1231円 ・ ・ 例えば上のような売り上げの平均を出すときに、コンビニの種類ごとに売り上げの最大値・平均値を出す関数またはマクロを教えてください。因みに、例で言うコンビニの種類の所の項目には実際には7万件くらいデータがありまして、範囲指定で=MAX()等をするのは大変です。 宜しくお願いします。    

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

VBAで (データ)A1:B12 グループ 計数 a 1 a 3 a 2 a 8 b 4 c 4 c 6 c 5 d 4 d 5 d 3 (コード) Sub test01() d = Range("a2").CurrentRegion.Rows.Count MsgBox d t = 1 Cells(1, "E") = Cells(2, "A") Cells(1, "F") = Cells(2, "B") '----- For i = 2 To d For j = 1 To t If Cells(i, "A") = Cells(j, "E") Then If Cells(i, "B") > Cells(j, "F") Then Cells(j, "F") = Cells(i, "B") End If GoTo p01 End If Next j t = t + 1 Cells(t, "E") = Cells(i, "A") Cells(t, "F") = Cells(i, "B") p01: Next i End Sub (結果)E1:F4 a 8 b 4 c 6 d 5 総なめ法なので6万行のデータでそこそこの時間内に 終わるかどうかやって見てください。

その他の回答 (4)

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.5

店名がA2以下に、売上がB2以下にあり、求めたい店名がC2にあるとするとD列 =MAX(IF($A$2:$A$65536=C2,$B$2:$B$65536,""))といれctrlキーとShiftキーを押しながらEnterキーを押すと配列数式になり、C2の最高売上が出てきます。あとはC列に店名を入れて数式をD列以下にコピーしていけばいいです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

第1行目に、コンビニ名、店名、売上など見だし行を作ります。 (1)コンビニ名で表全体をソートします。 (2)データ-集計-(グループの基準)コンビニ名 (集計方法)最大値(集計するフィールド)売上 現在の集計表と置き換える-集計行をデータ行の下に挿入する。-OK これでコンビニ別の最大値が出ます。

  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんばんは データベース関数を使った例を 1案   A    B   C 1 種類   店名 売り上げ 2 ファミマ ○店 100000円 3 ファミマ ×店 100200円 4 ローソン ○店  1231円 ・ ・ ・   E     F   G 1 種類   最大値  平均 2 ファミマ 式1   式2 3 種類 4 ローソン  ↓    ↓ 5 種類 4 7/11  ↓    ↓ ・セルF2に 式1 =DMAX(A:C,3,E1:E2) ・セルG2に 式2 =DAVERAGE(A:C,3,E1:E2) ・F2:G3の範囲を選択 ・下行へ必要数フィルドラッグ PS. >7万件くらいデータがありまして EXCELの最大行数は65536行です(^^; もし複数シートでの処理なら DSUM() と DCOUNT() も組み合わせて平均を出すことになります

myutarou
質問者

お礼

ありがとうございます! そうでした・・1シート65536行でしたね(^^; 因みにその方法でこれから全部で15シート分試してみます!!

  • koba_nob
  • ベストアンサー率29% (22/75)
回答No.1

マクロ使わなくても 最初の行をアクティブにして、 ctrl + shift + ↓ とすれば、最終行まで指定出来ますが、これじゃだめですか?

myutarou
質問者

補足

それで全体の値はでるのですが、行の途中で例で言うコンビニの種類が変わります。種類が変わったらまたその種類の最大値や平均値を出したいのです。

関連するQ&A

  • 関数について教えてください。

    エクセルについてわからない点があり、 質問を投稿しました。 ※エクセル初心者です。 以下のようなエクセルデータなのですが、 ★のついているところを関数で導き出したいです。    |売上|売上|売上|売上| ----------------------------------- A店 |100| 20|180|400 |★(4) --------------------------------- B店 | 10|100|店休| 50 |★(3) ----------------------------------- A店、B店各平均を求めたいけれど、 B店が店休日で売上が無い場合、 A店とB店では 平均を求める場合の 数値が違ってきてしまっているので、 COUNTA関数とかで、でどうにかならないものでしょうか?? =COUNTIF(範囲,"売上")では売上と入力されたセルだけカウントされてしまいますし… イメージとしては… =SUMIF(範囲,"売上",合計範囲)  ↑ここがCOUNTAならいいのに! という感じなのですが、 何か手はないでしょうか? よろしくお願いします。

  • Excel IF関数とAVERAGE関数

    定期考査の成績をExcelで作ってみようと思うのですが、関数の打ち方を忘れてしまいました。 IF関数を使い、点数の所がどこも記入されていなかった場合空白にして、一つでも入っていたらその平均を出そうと思っているのですが、出来ますよね? 平均を出したいところは、下の写真の範囲指定してあるところなのですが、覚えている感じで関数を入力すると、「VALUE」と出てしまいます。 関数は =IF(B3:J3="","",AVERAGE(B3:J3)) にしていますが、関数のせいならば、正しい関数を教えて下さい。 お願いします。

  • エクセル SUM関数について

    こんばんは。 SUM関数を使ったときに、指定した範囲が空白にもかかわらず、その合計は0になるようですが、これを空白のままにしておくにはどうしたらよろしいでしょうか。 というのも、SUMで合計したものの総合計を平均するのが目的なのですが、SUMの合計に0が入っていると平均値に影響してしまいます。 アドバイスお願いします。

  • ファイルメーカーのMax関数について教えてください。

    ファイルメーカーを勉強中なのですが、 Max関数でIDを自動取得しようとすると「再帰定義」 のメッセージが出てうまくいきません。 Max(ID)+1 ↑このような設定にしています。 最大値に+1した値を新規レコードのIDにしたいのですが、 ファイルメーカーではできないのでしょうか? Max関数以外でもいいのですが、方法がありましたら 教えてください。

  • エクセルのデータベース関数について

    エクセルのデータベース関数について質問します。 データベースの指定された列を検索し、条件を満たすレコードの中で数値が入力されているセルの個数を数えたいと思います。が、その列が複数あり、また、条件も複数ある場合、DCOUNT関数を使うと、データベース関数に指定した条件が設定されているセル範囲をいくつも設定しなくてはならないのでしょうか? 以前、Lotusを使っていた時は、#and#という形で、条件をいくつも指定することが出来たのですが、そういったことは出来るのでしょうか? わかりにくい表現かもしれませんが、よろしくお願いします。

  • excel 関数の中にセルの引用

    うまく質問できないのですが、宜しくお願いします。 今、最大値を求める関数を使おうと思っていて、次を使います。 =LARGE(B1000:B1150,1) ここで求める範囲を簡単に変えるために、上B列の指定はそのままに、1000や1150の行指定のみを他のセルから持ってきたいと思います。  具体的には、範囲の始まりを指定するセルと、範囲の終わりを指定するセルがあり、例えばそれぞれに200、210と入力すると、 =LARGE(B***:B???,1) という関数の***と???に、200と210が入り、B200からB210までの最大値が求められるといったものです。  このような、方法を実現する表記方法をお教え下さい。よろしくお願い申し上げます。

  • エクセルの関数について

    いつもお世話になっております。 エクセルの操作(関数)について質問があります。 A列に日付、B列に数値を記載したデータがあります。 (1)データの抽出日を指定して、その日より○日前までの最大値、最小値 (2)上記と同じ条件で、マイナス平均、プラス平均 の求め方を教えてください。 分かりづらい文章で申し訳ありませんが、よろしくお願いいたします。

  • この関数の意味?

    =MAX(INDEX(LEN($A1:$A10),)) これで、A1:A10内の各セルの最大文字列数がわかるようです。 MAX、INDEX、LENの各関数の意味は分かりますが、なぜこれで範囲内の最大文字列数がわかるのか不思議です。 どなたか、お馬鹿なわたくしめにもわかるようにご教示いただけませんでしょうか?

  • エクセル関数

    エクセル2010を使っていますが、1つのシートAには販売時の日付、品番、数量、単価、販売額が記されており、同一ファイル内には別のシートBで指定した日付の売上明細を表記したいと思っていますが、うまく関数が組めません。どのような関数を組めば表記できますでしょうか?ちなみにシートAは1か月継続して使うため最大ラインがおおよそ1000行くらいで、シートBは最大50行くらいの表記が可能である必要があります(A5~A55行目) 指定した日付の売上明細(シートB)に表記が必要なので品番、数量、金額になります 指定する日付ですが、シートBの先頭行A1かB1に日付を入力し、A5行目から開始しようと思っています。A5は品番、B5は数量、C5は数量、D5は単価、D6は合計を表記したいと思っています

  • エクセルで関数を使った計算

    エクセルの質問ですが 異なる50個のデータ( C4:C53 )があります。 SUM,COUNT,SQRT,IFの関数だけを使って、合計・平均・分散・標準偏差・最大値・最小値・範囲を求める計算式を教えてくれませんか?? よろしくお願いします。

専門家に質問してみよう