• ベストアンサー

エクセルでできますか?

こんばんは 添付図のようになっているデータがあるとします。 このとき、人数合計(学校毎のクラス合計人数)をD列、クラス数合計をE列の、それぞれ学校毎の一番上の行に入力したいのですが、どのような式を書けばいいのか教えて頂きたいです。 図でいうと D2にC2+C3の和、E2に2 D4にC3~C7の和、E4に4 というような感じです。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

VisualVasicのカテゴリーで質問されているということは、ただの数式のことではないですよね? とりあえずエクセルVBAでやってみました。 うまい具合にA列の学校名のみ結合セルになっているのを利用してみました。 列の配置さえ、ご提示のとおりなら、行はいくら増えても大丈夫です。 Sub test01()   Dim i As Long   For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row     If Cells(i, "A").Value <> "" Then       Cells(i, "E").Value = Cells(i, "A").MergeArea.Rows.Count       Cells(i, "D").Value = Application.Sum(Cells(i, "C").Resize(Cells(i, "E").Value))     End If   Next i End Sub まさかとは思いますが、万一使い方がわからないとこまるので一応書いておきます。 1.その表があるシートをひらき、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に上記のコード(Sub~End Sub)をコピペします。 3.Alt+F11キーでワークシートへもどります。 4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。

その他の回答 (6)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 まず、D2セルに次の数式を入力して下さい。 =IF($A2="","",SUM(IF(COUNTIF($A$1:$A2,"*?")=COUNTIF($A:$A,"*?"),$C2:INDEX($C:$C,MATCH(9^9,$C:$C)),OFFSET($C2,,,MATCH("*?",INDEX($A:$A,ROW()+1):INDEX($A:$A,MATCH(9^9,$C:$C)),0)))))  次に、E2セルに次の数式を入力して下さい。 =IF($A2="","",COUNT(IF(COUNTIF($A$1:$A2,"*?")=COUNTIF($A:$A,"*?"),$C2:INDEX($C:$C,MATCH(9^9,$C:$C)),OFFSET($C2,,,MATCH("*?",INDEX($A:$A,ROW()+1):INDEX($A:$A,MATCH(9^9,$C:$C)),0)))))  次に、D2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  以上です。

回答No.5

F列を作業列(非表示)として使っていいなら F3に「=IF(A3="",F2,A3)」 D3に「=IF(A3="","",SUM(C3:OFFSET(C3,E3-1,0)))」 E3に「=IF(A3="","",COUNTIF($F$3:$F$8,F3))」 $F$3:$F$8は最終行にあわせて変える。 もしくはこれぐらいあればいいと思う最大行数を指定するか。 入力が終わったら、F3からE3を範囲選択して数式を末尾までコピー 値が入っている最初の行位置を取得する方法がわかれば 作業列なしでもoffset関数でいけるんじゃないかと思います。 エクセルの関数に詳しい人ならわかるかもしれませんが私はちょっとわかりません。

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

式を入れるセルを、質問者が判断して、関数を入れれば、質問の答えを出すのは難しくない。 既に出ている回答のように、セルの場所(主に行)に応じて入れる式を組めば簡単(例=C2+C3のように。 これなら加減算、SUM関数など知っておれば質問などしなくて良はず。 ーー 普通の、ここでの質問は、同性格のデータが下方向に並んでいて、一番上のセル向けに式を組んで入れて、下方向に式を複写すると、第2行目以下はセル番地が旨く変化してくれて、各行の結果が一遍にでるという、「式の複写」の「威力を使う」ものなのです。 その本質を忘れた表設計と、それに起因することの質問になっていて、果たして、エクセル関数といわれるものを判っているのかなと思う。 ーーー A列でセル結合があるので、エクセル関数ではA小学校のクラス数は出ない。 答えを入れる場所が、毎行でなく、行番号も不定なので、式の複写が使いにくい ーー 例えば学校ごとクラス数は =IF(A2="","",mrg(A2)) その前にユーザー関数(mrg)として、標準モジュールに Function mrg(a) mrg = a.MergeArea.Rows.Count End Function を定義するために入れておく。 質問者の能力外かもしれないが、他に方法が無くやむをえない。 ーー 例データ A列   B列   C列  D列   E列 学校 クラス 人数 クラス数 生徒数 A X 1 2 3 - Y 2 B X 2 4 10 - Y 3 - Z 4 - U 1 C X 1 3 7 - Y 2 - Z 4 D X 2 6 13 - Y 4 - Z 1 - U 3 - V 1 - W 2 D2の式 =IF(A2="","",mrg(A2)) 下方向に式複写 E2に =IF(D2="","",SUM(OFFSET(C2,0,0,D2,1))) 下方向に式複写。 ーー 結果 上記D、E列 === なお、エクセル関数では(そのエクセル関数の現在の本質から) セル結合に関して、一切情報は取れないから 無駄なことを考えない様、注意のこと

  • fmat
  • ベストアンサー率35% (39/111)
回答No.3

1です。 すみません!カン違いしてました。 count関数じゃなくてcounta関数です! =counta(b2:b3) =counta(b4:b7) と入力してください。 申し訳ないです。

回答No.2

D2 → =SUM(C2:C3) E2 → =COUNTA(B2:B3) D4 → =SUM(C4:C7) E4 → =COUNTA(B4:B7) D8 → =SUM(C3:C10) E8 → =COUNTA(B8:B10) とか

  • fmat
  • ベストアンサー率35% (39/111)
回答No.1

D2には =sum(c2:c3) D4には同様に =sum(c4:c7) E2にはcount関数を使って・・ =count(b2:b3) 同じくE4には =count(b4:b7) を入れてみるのはどうでしょうか?

関連するQ&A

  • エクセルで集計

    エクセルでの合計について教えていただきたいのです。 A1~A10000まで日付が、B1~B10000まで数値が入力されています。 B列の数値を50行ごとに合計し、C列に表示する方法。 現在は、sum関数で手作業です。 簡単に表示できる方法を教えてください。 また、C列に合計のある行をD列(D1・D2・D3・・・)、E列(E1・E2・E3・・・)、F列(F1・F2・F3・・・)に並べたいのです。(50行ごとに間引いて表示するような感じです) 現在は、=C50・=C100・=C150のように手作業です。 もっと多量のデータが入力されたシートもあります。また、100行ごと150行ごとなど合計行が違う場合もあります。 エクセル初心者です。 よろしくお願いいたします。

  • エクセルで計算が出来ません。

    エクセルで表を作成し平均値を出したいのですがどうしても出来ません。教えてください。   A    B   C   D   E   F(合計)     1280    25   4823  325   1   6128      362   2220 1890 466 1 4938 4736 1650 436 1234 1 8056 0 0   0 19122 平均値                             6374 というように平均値を出したいんですが、なん行かの表を作っておいて最後の行で計算をしたいのです。Eの列はFの列がスペースでないときには、1を立たせ入力がないつまり空白のときは、0になるようにしたいのです。最後に入力があった行(1)を足して合計を割れば出来ますが、F行= " ","0","1"とう式は成り立ちません。よい方法を教えてください。 

  • エクセルについて

     A  B  C  D 1○    不 2     不 3○  4○    不 5     不 6 7 というような表をつくったのですが、 Aの行には○を含み、かつ、Cの行には不を含む1~5までの列の数を 例えばD7のセルに合計を出したいのですが、どのような式を書けばよいのでしょうか? よろしければどなたかご教授おねがいします。

  • エクセル初心者です 困ってます

    データを入力したのですが 数量を【C列】 一個の単価を【D列】 その合計(掛け算)を【E列】に表示したいです  それが200行あります どうしたらいいのですか? 初心者ですいません 教えてもらっていいですか?

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

    いつもお世話になっています。   A列   B列   C列   D列   E列   F列   1行 氏名   試験1  試験2  試験3  試験4  合計点 2行 A     ○    ×    ○    ×    13 3行 B     ×    ○    ○    ○    10 4行 C     ○    ×    ×    ×    10 5行 点数    10    5    3    2 上記の表で、合計点を出すにはどの関数を使うのでしょうか。 できれば関数式書いていただきたいのですが。 よろしくお願いいたします。

  • EXCELで時間の計算

    EXCELで時間の計算をしたいのです。(和) A1→15  B1→30  C1→22  D1→00 A2→16  B2→30  C2→21  D2→00 A3→ 5  B3→00  C3→12  D3→30 と入力してあります。 A1とB1でひとつの時刻です。 つまり1行目は15:30と22:00です。 まずは後ろの時刻から前の時刻を差し引いたもの つまり1行目でいうところの22:00から15:30を引いたものの結果6時間30分を E1→6 F1→30とするにはどうしたらよいですか? またその合計 1行目→6時間30分 2行目→4時間30分 3行目→7時間30分を足したもの18時間30分を E4→18 F4→30とするにはどうしたらよいですか? そもそも時と分を分けたところに失敗があるのですが それはもうどうしようもありません。 それでは不可能なんでしょうか? E1、F1に入れる式、 E4、F4に入れる式を教えてください。 よろしくお願いいたします。

  • Excelでの式を教えてください。

    下記の様な表内でのD列の自動算出式はどんな式になるのですか? A B C D 1 合計 2 20 50 70 1 3 0 0 0 4 40 10 50 2 5 0 0 0 6 0 0 0 7 10 10 20 3 上記の様なエクセルの表でA列+B列の合計をC列に自動算出(この式は判ります)。これに対して6行分(実際は500行程有ります)の合計に対して、”0”以外の行のD列に”1” ”2” ”3”を自動的に記入(付与?)していく式はどんな式ですか?(合計欄は、”0”であったり無かったりアトランダムです)。ご教授宜しくお願い致します。 ー 以上 ー

  • エクセルについてです

    A列1行目から順にa,b,c,d,e…… B列1行目から順に1,2,3,4,5…… C列1行目から順にア,イ,ウ,エ,オ……と入力されているエクセルの表を、D列1行目にa E列1行目に1 C列2行目にア 以下同様にD列3行目にb E列3行目に2 D列4行目にイ……というふうに移していくにはどうしたらよいでしょうか。

  • (エクセル)数値だけ合計したい

    複数のセルに入力されている数値だけを抽出し、合計したいと思います。   A     B    C    D    E    F    G 1 合計金額 金額1  金額1理由 金額2  金額2理由 金額3  金額3理由 2      1000円   菓子  3 1500円  1000円   菓子   500円   飲料 4 1520円  1000円   菓子   500円   飲料   20円   消費税 以上のようにA列に合計金額を計算させる数式を考えています。 (ルール) ・B列とC列、D列とE列、F列とG列はセットです。例えば、B列には入力されているが、C列は空白ということはない ・B列とC列→D列とE列→F列とG列の順に入力されていく ・2行目、3行目のように、常に金額が3つとも入力されているとは限らない ・金額が入力されているB列、D列、F列には、「○○円」と「円」も一緒に入力されている (やりたいこと) A列に合計金額を反映させないのですが、以下のように規制したいです (1)2行目のように、金額が1つだけの場合(B列とC列しか入力されていない場合)は、合計金額は空白セルにする (2)3行目、4行目のように、金額が2つ以上の場合(D列とE列や、F列とG列にも入力されている場合)は、合計金額を反映させる (3)合計金額は「○○円」と「円」も一緒に反映させる (考えたこと) B列の金額とB列+D列+F列の合計を比較し、同じならA列は空白、違う場合はB列+D列+F列の合計をA列に反映させるようIF関数を使えばいいのではないか、と考えました。 そこで、まずB列+D列+F列の合計を出す関数を作ってみたのですが、うまくいきませんでした。 =SUM(SUBSTITUTE(B2,"円","")*1,SUBSTITUTE(D2,"円","")*1,SUBSTITUTE(F2,"円","")*1) とすると、金額が3つとも入力されていればいいですが、一つでも空白セルがあると、#VALUE!とエラーになってしまいます。 SUMPRODUCTを使用してできるかと思いましたが、同じ結果でした。 どうすれば、思っているようになるのでしょうか。 ご存知の方がいましたら教えてください。 よろしくお願いします。

  • エクセル 表の自動追加

    エクセルで見積書を作成しています。 単純化して書きますと    A      B        C    D   E 1 商品コード 商品名    単価   数量  金額               合計¥~~ vlookup関数を使ってA列に商品コードを入力B列に商品名、C列に単価が引用され、後はD列の数量を入力すればE列の金額および合計金額が出るというようにしているのですが、 A~Eが埋まれば自動的に2行目が合計との間に挿入されるような関数?などはあるのでしょうか。現在では15行程度の表があるのですが、もっと数が増えたときや、数が少ないときに〆の線を引くのが面倒なのです。  私自身はエクセルはネットで独学程度で学んでいるので詳しくありません。自分でいろいろ調べたのですが(と言ってもネットで調べただけですが)VBAを使用しなければ難しいでしょうか? 拙い文章で申し訳ありませんが、ご教授のほどよろしくお願いいたします。

専門家に質問してみよう