これからの季節に親子でハイキング! >>

エクセルの表で、
1/1交通費 \820
1/2燃料費 \1,000
1/3交通費 \510
1/3雑費 \600
1/5交通費 \240
---------------------
交通費計 \○○○○
燃料費計 \○○○○
その他 \○○○

という内容で、下欄の各科目ごとの合計欄に
自動的に集計できるような関数ってありますか?
また、無い場合は、どのように工夫すると便利な
表になるか助言をいただきたいと思います

ちなみに、日付、科目、金額は手入力で、科目コードなどは
使用していません。

よろしくお願いします。

A 回答 (2件)

私もSUMIFを使っています。



家計簿を作る際参考にしたサイトがありますので貼っておきますね。
詳しく載っています。

参考URL:http://www11.plala.or.jp/koma_Excel/contents2/ma …
    • good
    • 3
この回答へのお礼

お二方ともありがとうございました。
助かりました!

お礼日時:2007/01/27 16:45

SUMIF関数を利用するのが一般的でしょう


=SUMIF(B:B,"交通費",C:C)
でB列が「交通費」となっている行のC列の値を合計します

「交通費」という費目が別のセルに書かれているなら(仮にA10とすると)
=SUMIF(B:B,A10,C:C)
でも可能です。
    • good
    • 3

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q(EXCEL)出納帳に科目別シートを作成したい

添付の画像のような出納帳を作成しています。

「出納帳シート」の『相手科目』は、入力規則のリストを使用して、《リストシート》より選択するように設定しました。

今回は、この『相手科目』をそれぞれ別々のシートに分けて、自動的に集約・合計されるようなものを作成したいと思っております。

Webを検索してみるとVBAを使用する必要があるとの内容を拝見したのですが、自分のExcelファイルに導入する際、どこを書き換えれば良いのか分らず、行き詰まってしまいました。

関数を使用しても、VBAを使用しても良いのですが、VBAについてはあまり知識がありませんので、初心者向けに教えて下さると助かります。

面倒なお願いで申し訳ないのですが、よろしくお願い致します。

Aベストアンサー

>関数を使用しても、VBAを使用しても良いのですが
関数で対応できます。
ご提示の画像が判読できない状態です。
B5は需用費と読めますがそれで良いでしょうか?
また、費目別のシートへ抽出する項目は日付、摘要、入金、出金で良いでしょうか?
日付については下記の数式で良いと思います。
=IF(COUNTIF(出納簿!$B$5:$B$1000,"需用費")>=ROWS(A$5:A5),INDEX(出納簿!A:A,SUMPRODUCT(SMALL((出納簿!$B$5:$B$1000="需用費")*ROW(A$5:A$1000)+(出納簿!$B$5:$B$1000<>"需用費")*10^9,ROWS(A$5:A5))),1),"")
摘要はINDEX関数の出納簿!A:Aを出納簿!C:Cに置き換えれば目的に合います。
=IF(COUNTIF(出納簿!$B$5:$B$1000,"需用費")>=ROWS(A$5:A5),INDEX(出納簿!C:C,SUMPRODUCT(SMALL((出納簿!$B$5:$B$1000="需用費")*ROW(A$5:A$1000)+(出納簿!$B$5:$B$1000<>"需用費")*10^9,ROWS(A$5:A5))),1),"")
入金および出金は摘要を右へコピーすれば良いでしょう。
1行分の数式が確定したら纏めて下へ必要数コピーすれば完了です。
提示の数式は元データ(出納簿)の最大行番号を1000にしてありますので必要に応じて増減してください。
計算結果で0が表示されるセルが見難い場合は条件付き書式で0の場合はフォントの色を白にしてください。

他の費目シートについては需用費シートをシート全体をコピーして、費目の文字列を置換すれば良いでしょう。

>関数を使用しても、VBAを使用しても良いのですが
関数で対応できます。
ご提示の画像が判読できない状態です。
B5は需用費と読めますがそれで良いでしょうか?
また、費目別のシートへ抽出する項目は日付、摘要、入金、出金で良いでしょうか?
日付については下記の数式で良いと思います。
=IF(COUNTIF(出納簿!$B$5:$B$1000,"需用費")>=ROWS(A$5:A5),INDEX(出納簿!A:A,SUMPRODUCT(SMALL((出納簿!$B$5:$B$1000="需用費")*ROW(A$5:A$1000)+(出納簿!$B$5:$B$1000<>"需用費")*10^9,ROWS(A$5:A5))),1),"")
摘要はINDEX...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで勘定科目の集計、勘定科目の並び順について

現金出納簿をデータベース化して、勘定科目ごとに
集計をしたいと考えています。

日付 摘要 部門 勘定科目 収入or費用 金額

部門ごとに勘定科目の集計をとりたく、また摘要も
つけたかったので、ピポットテーブルを使ってみました。まあまあ、欲しい表は出来たのですが、勘定科目の並び順がランダムでした。
規則的に並び替えしたいのですが、どうすればいいでしょうか?
科目コードをつける?と思っても、その先どうすれば
いいのかわかりません。
関数で解決出来るのでしょうか?
関数の知識はあまりありません。マクロとなると全くありません。
アドバイスお願いします。

Aベストアンサー

[フィールドの設定]-[詳細]-[自動並べ替えオプション]で
[手動]を選択すれば、ドラッグで並べ替えることができます。

[自動]で並べ替えたい場合は、
[ツール]-[オプション]-[ユーザー設定リスト]の
[ユーザー設定リスト]で「新しいリスト」を選択し、
[リストの項目]に並べたい順に勘定科目を入力して、[追加]-[OK]。

Qエクセル入力で項目別にシートに振り分ける方法を教えてください!

エクセルでの入力の時に
シート1では全ての営業所をひとまとめにして入力
シート2以降では営業所別にシートに振り分ける方法がわかりません。

シート1(入力するシート)
1 営業所名  支出金額  項目
2 群馬支部  11980  雑費
3 長野支部  12080  交通費
4 群馬支部  19800  接待交際費
5 新潟支部  19800  接待交際費

シート2(群馬支部)
1 営業所名 支出金額 項目
2 群馬支部 11980 雑費
4 群馬支部 19800 接待交際費

入力する場所はシート1のみで
シート2、3は営業部ごとの項目になっていて
シート1に入力すると自動で各シートに
振り分けられるようにしたいのです。

これを解決できる方法とは、どのような方法があり
そしてどうやれば出来るのでしょうか?

お時間あるときにご返答頂けると嬉しいです。
どうぞよろしくお願い致します。

Aベストアンサー

関数のみで行う場合です。

シート1(入力するシート)
 A  B       C       D
1 No. 営業所名  支出金額  項目
2 1 群馬支部   11980    雑費
3 2 長野支部   12080    交通費
4 3 群馬支部   19800    接待交際費
5 4 新潟支部   19800    接待交際費

VLOOKUP関数で処理するのでA列にNo.を入れてください。
ちなみにA2以降のA列に
  =ROW()-MATCH("No.",A:A,0)
と入れると並べ替えをしても行番号が変わりません。

シート2(群馬支部)
  A B        C      D       E
1   営業所名 データ数 総データ数
2   群馬支部   2      4
3 
4                           行番号
5 No. 営業所名 支出金額 項目       0
6  1  群馬支部  11980   雑費       1
7  2  群馬支部  19800   接待交際費  3
8  3                          #N/A

各セルに次の関数を入れます。
B2:営業所名
   ここをリスト化すると1枚のシートで全営業所が計算できます。
C2:=COUNTIF(Sheet1!B:B,A2)
   群馬支部のデータ数を求める
D2:=MAX(Sheet1!A:A) or =COUNTA(Sheet1!B:B)-1
   総データ数を求める
D5:0
D6:=MATCH($A$2,INDIRECT("Sheet1!$B$"&TEXT(E5+2,"0")&":B"&TEXT($C$2+1,"0")),0)+E5
   非常に面倒な式ですが、シート1における営業所名の出現行を
   MATCH関数で出しています。単純に組むと一番始めしか出て来な
   いので次の行では前行で見つけたシート1での出現行の次から
   検査する必要があります。
   そのためINDIRECT関数で可変する範囲を設定しています。
A6:連番(シート1と同じ)
B6:=IF(ISERROR($E6),"",VLOOKUP($E6,Sheet1!$A:$D,2,FALSE))
   VLOOKUP関数で必要データを取り出します。
   データがなくなるとE列の行番号がエラーになるので、そこは
   表示しない(空白)ためのif文を加えてあります。
   後は必要行コピーすれば完成です。

 

関数のみで行う場合です。

シート1(入力するシート)
 A  B       C       D
1 No. 営業所名  支出金額  項目
2 1 群馬支部   11980    雑費
3 2 長野支部   12080    交通費
4 3 群馬支部   19800    接待交際費
5 4 新潟支部   19800    接待交際費

VLOOKUP関数で処理するのでA列にNo.を入れてください。
ちなみにA2以降のA列に
  =ROW()-MATCH("No.",A:A,0)
と入れると並べ替えをしても行番号が変わりません。

シート2(...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで、列内が同じ名前を集計する方法は?

エクセルで以下のような表を作成したとします。

      A列   B    C    D
 1行   名前   項目   金額
 2    すずき  あいう  100
 3    すずき  かきく  200
 4    すずき  さしす  450
 5    さとう  あいう  150
 6    さとう  さしす  200
 7    はやし  あいう  250 
 8    はやし  かきく  170
 9    はやし  たちつ  980

B列の名前が同じ者の、金額の合計をD列に出したいのです。
D4に すずきの合計 750、D6にさとうの合計 350、
D9にはやしの合計 1150  というふうに。
全部で100人分位、データ行数は15000ほどあるのですが
これをさっとできるようにはどのようにしたら良いのでしょうか?

Aベストアンサー

次の方法は如何でしょうか。
D2に=IF(COUNTIF(A:A,A2)=COUNTIF($A$2:A2,A2),SUMIF(A:A,A2,C:C),"")を入力→D2を選択→フィルハンドル(D2セル枠右下の■)をダブルクリック
但し、C列途中に空白がある場合、その直前までしかコピーされませんので、空白セル前のセルを下方向にコピー後、同様にフィルハンドルをダブルクリックし下さい。

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QExcelで日別に入力されたデータを月別に集計するにはどうしたらいいのでしょうか。

Excelで月別の集計をしたいのですが
例えば
  日付    数量
10月25日  200
10月27日  150
10月30日  120
11月 1日  200
11月 3日  150
のように、日付が飛び飛びで連続していなくい日々の数量を、上の行から順番に入力していった場合に(月が替わる行が決まっていない)月別の集計を取る方法はないでしょうか。


 

Aベストアンサー

どのように集計する月を指定するのかが書かれていませんが、例えば11月分の合計を出したいなら

1)11月までの合計から10月までの合計を引く方法
 =SUMIF(A:A,"<=11/30",B:B)-SUMIF(A:A,"<=10/31",B:B)

2)月が「11」のB列を合計する方法
 =SUMPRODUCT((MONTH(A2:A100)=11)*(B2:B100))

なども考えられます。

でもエクセルなら一番オーソドックスな方法はピボットテーブルでしょう。C列に
 =TEXT(A1,"YYYY/MM")
で「2008/11」のような文字列を生成しておいてピボットテーブルで集計すれば、シート上にある全ての月の合計が一発で求められます。
ピボットテーブルの使い方はGoogleなどで検索したらたくさん見つかります
http://www.viplt.ne.jp/tomy/pibot.html

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルの1シートを項目別に別シートへ分ける方法

エクセル2010で1シートのデータを項目別に別シートへ自動的に分割する方法で困っています。
検索するとマクロを使うと書いていますが、マクロはほとんど使ったことが無いのもあって、わかりませんでした。

シート1
A列(日付8ケタ+商品番号6ケタ) B列(売上額)
20130515000004           300
20130515000006           100
20130518000004           300
20130519000001           500
20130519000004           300
・・・                   ・・・
をA列の日付部分上8ケタを使って日別にシートを分け、
シート名をuriage20130515(uriageと日付8ケタ)という名前にしシート名+CSV形式で保存したいです。

シート2 シート名:uriage20130515
A列         B列
20130515000004 300
20130515000006 100

シート3 シート名:uriage20130518
A列         B列
20130518000004 300

シート4 シート名:uriage20130519
A列         B列
20130519000001 500
20130519000004 300

このように自動で別シートに分割した上で、シート名CSV形式で保存まで自動でできるとありがたいです。

自動化できるならシートを分割するマクロ、シート名でCSV保存するマクロが一つのマクロになっていても、分かれていてもOKです。

このようなことはできますか?

よろしくお願いします。

エクセル2010で1シートのデータを項目別に別シートへ自動的に分割する方法で困っています。
検索するとマクロを使うと書いていますが、マクロはほとんど使ったことが無いのもあって、わかりませんでした。

シート1
A列(日付8ケタ+商品番号6ケタ) B列(売上額)
20130515000004           300
20130515000006           100
20130518000004           300
20130519000001           500
20130519000004           300
・・・           ...続きを読む

Aベストアンサー

手順:
元データのブックを一度保存して開き直す
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
 dim myPath as string
 dim myFile as string
 dim h as range
 dim s as string
 dim w as worksheet

 mypath = thisworkbook.path & "\"
 on error resume next
 kill mypath & "*.csv"
 application.displayalerts = false
 for each w in worksheets
  if w.name <> activesheet.name then w.delete
 next
 application.displayalerts = true
 on error goto errhandle

 for each h in range("A1:A" & range("A65536").end(xlup).row)
 if isnumeric(h.value) then
  s = left(h.value, 8)

 ’CSVに書き出し
  open mypath & "uriage" & s & ".csv" for append as #1
  print #1, h.value & "," & h.offset(0,1).value
  close #1

 ’シートに書き出し
  h.entirerow.copy worksheets(s).range("A65536").end(xlup).offset(1)

 end if
 next

 for each w in worksheets
  w.columns("A:B").autofit
 next
 exit sub

errhandle:
 worksheets.add after:=worksheets(worksheets.count)
 activesheet.name = s
 range("A1:B1") = array("date", "value")
 resume
end sub


ファイルメニューから終了してエクセルに戻る
ALT+F8を押しマクロを実行すると,CSVを書き出す。



#「CSVを書き出す」のが目的で「別シートに振り分ける」こと自体に目的はないと思いましたが,まぁご相談なのでシートに書き出しも追加しました。。。と思って書き足してったら無駄に長いマクロになっちゃいました。あんまりイミなかったです。

手順:
元データのブックを一度保存して開き直す
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
 dim myPath as string
 dim myFile as string
 dim h as range
 dim s as string
 dim w as worksheet

 mypath = thisworkbook.path & "\"
 on error resume next
 kill mypath & "*.csv"
 application.displayalerts = false
 for each w in worksheets
  if w.name <> activesheet.name then w.delete
 next
 a...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング