- ベストアンサー
Excelにてセルを1列飛ばしで和を求めるには?
Excelにて50名のリスト表を作り、 1人に対して2列使い、一方に時給、一方に時間を入力しています。 例) A B C D E F ... CW CX CY 1 田中 山田 鈴木 時給最大 時給平均 時給最小 2 800 8 900 6 750 4.5 900 816 750 3 4 . . . (こんな感じで。) それを最後に和(実際はMAX、AVERAGE、MIN)を出したいのですが、 1つずつのセルをクリックしながらやっていくと、 最大30個までの数値入力しか出来ない為、 50人の和が取れません。 しかし、単価、時間が1列ごとに入力されているので、 1人目から50人目までをドラッグして A1:CV1みたいにつなぐ事も出来ません。 一つずつ+(プラス)でつないでその個数分で割るにしても、 空白箇所があったり、追記で空白が埋まった場合など 割る数値を変えるのも大変です。 何かいい方法はないでしょうか?
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
いつもは配列数式回答常連なのですが、既出ですので SUMPRODUCT関数で。 例データ B1:B10 3 1 2 3 4 5 6 1 3 偶数行の和は =SUMPRODUCT((MOD(ROW(A1:A10),2)=0)*(B1:B10)) 結果 10 件数は =SUMPRODUCT((MOD(ROW(A1:A10),2)=0)*1) 平均は 合計和/件数
その他の回答 (7)
620___4____730___5___920___8.5___620 <--- =SMALL(A1:H11, COUNTIF(A1:H1, "<530")+1) 最低賃金とは、それより低い賃金で契約してはいけないと定められている賃金額です。 ですから、賃金列では、絶対にそれ以下の値は発生しません。 今、貴社の最低賃金が\530 だとすると、この値以下の入力は全て時間列になります。 ですから、時間の最大値の次の値が時間給の最小値ということです。 対象列は、一列置きに<最低賃金より上か下か>という属性を持っています。 この属性を利用すれば、事実上、一列飛びに集計できるということです。 ※普遍的に通じる方法じゃないですが、安直に結果を求める方法です。
お礼
なるほどなるほど、そういう方法で1つ飛ばしが可能になる訳ですか^^ 配列数式というのはよく分からなかったのですが、 こちらは理解できました。 何度も付き合って頂きありがとうございました。 また何かありましたら、宜しくお願い致します。
まあ、割愛して帰るのも・・・ =SMALL(A1:C1, COUNTIF(A1:C1, "<10")+1) やはり、最低賃金を利用するということです。
お礼
何度もご回答頂きありがとうございます。 一度試してみますね。 ところで、さっきも出てきた最低賃金ってなんでしょう...? まだまだ、勉強不足ですね;; じっくり調べてみます。 本当にありがとうございました。
最小を勘違いしていましたが、回答は割愛します。 基本は変わりませんので・・・。
さて、実際の Excel で作表してみました。 __________________従業員名__________________||_最大_||_平均_||_最小_|| ------------------------------------------------- ____田中_____||____山田____||___鈴木_______|| || || || ___800|___8.0||__900|__6.0|| ___750||__4.5||___900||___816||_____4.5|| ------------------------------------------------- 表の体裁をちょっと工夫すれば良いと思います。 縦に統合すればズズーッも可になります。 =MAX(A3:F3) =INT(SUMIF(A3:F3,">600",A3:F3)/COUNTIF(A3:F3,">600")) =MIN(A3:F3) 5、6行目も生成してズズーッとやってみましたがOKでした。 最低賃金というのがありますから、これでOKだと思います。
お礼
細かく表を作っていただいてありがとうございます。 しかしながら難しくてまだ理解できていません;; すいません。 =MIN(A3:F3)で、A3からF3まで一度に囲むと 時間の一番小さい方の数値を拾いませんか? (試しもせずにこんな疑問を言って申し訳ないのですが...;;) でも、じっくり考えて1度試してみます。 ご回答ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 尚、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 ■最大=MAX(IF(MOD(COLUMN(行範囲),2)=1,行範囲)) ■平均=AVERAGE(IF(MOD(COLUMN(行範囲),2)=1,行範囲)) ■最小=MIN(IF(MOD(COLUMN(行範囲),2)=1,行範囲))
お礼
ご回答ありがとうございます。 少し入力してみたのですが、 シフト+コントロール+エンターをしてみても何も変わらないのはなぜでしょうねぇ;; まだじっくり試していないので、これから挑戦してみます。 本当にありがとうございました。
合計:=SUM(IF(MOD(COLUMN($A$2:$CV$2),2),IF($A$2:$CV$2<>"",$A$2:$CV$2,""),"")) 最大:=MAX(IF(MOD(COLUMN($A$2:$CV$2),2),IF($A$2:$CV$2<>"",$A$2:$CV$2,""),"")) 最小:=MIN(IF(MOD(COLUMN($A$2:$CV$2),2),IF($A$2:$CV$2<>"",$A$2:$CV$2,""),"")) 平均:=AVERAGE(IF(MOD(COLUMN($A$2:$CV$2),2),IF($A$2:$CV$2<>"",$A$2:$CV$2,""),"")) をそれぞれ配列数式として入力(Ctrl+Shift+Enter)すればOKです。 指定範囲について、 列番号を2で割った余りが1で、かつ空白でないならばその数、でなければ"" を返した配列全体について SUM,MAX,MIN,AVERAGEを取っています。 こんな書き方もできます。 =MAX(IF(MOD(COLUMN($A$2:$CV$2),2)*($A$2:$CV$2<>""),$A$2:$CV$2,"")) Excel2003で動作確認済
お礼
ご回答ありがとうございます。 そもそも、自分自身が配列数式というものを分かっていないもので、 いまいち理解していません。;; 10個程度の表を作って何度かやってみたのですが、 答えが出ない状況です。 これからじっくり挑戦してみます。 本当にありがとうございました。
名前がA列、時給がB列、C列から右が毎日の時間にすれば解決しそうな気がしますけどいかがでしょうか?
お礼
ご回答ありがとうございます。 また何かありましたら宜しくお願い致します。
お礼
ご回答ありがとうございます。 なるほど、行数を出して2で割れば、偶数行だけ拾えるってことですか。 ROW() は行の場合で、列の場合は COLUMN() を入れればいいんですよね。 ありがとうございます。試してみます。