• ベストアンサー

エクセルでの家計簿の自動入力

特定のワードが含まれている語句がD欄に含まれている場合、費目名と詳細費目名が自動で決まるように設定したいと考えています。 例えば、D10に携帯引き落としと書いてある場合、F10には通信費G10には携帯代と自動で入力されるようにしたいと考えています。 これはエクセルで可能でしょうか?だとすれば方法を教えて下さい。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 画像が小さくて詳細が判りませんので、やり方だけ・・・ Excel2007以降のバージョンだとします。 ↓の画像のようにSheet2に費目・詳細費目の表を作成しておきます。 (表内の「*」アスタリクスはまず使用することはないであろうという前提で入力しています。 空白セルを範囲指定しないためです。) 表は実際のデータに合わせて作成してください。 Sheet1のF10セルに =IFERROR(INDEX(Sheet2!A$1:D$1,,SUMPRODUCT(ISNUMBER(FIND(Sheet2!A$2:D$6,D10))*COLUMN(A$1:D$1))),"") G10セルに =IFERROR(INDEX(Sheet2!A$2:D$6,SUMPRODUCT((ISNUMBER(FIND(Sheet2!A$2:D$6,D10)))*ROW($A$1:$A$5)),MATCH(F10,Sheet2!A$1:D$1,0))&"代","") ※ G10セルに入れる数式のINDEX関数の行範囲とSUMPRODUCT関数部分の >*ROW($A$1:$A$5) 部分が違うコトに注意してください。 (INDEX関数の範囲指定行数とROW($A$1:$A$5)は1行目から指定し、行数を合わせる必要があります。) という数式を入れF10・G10セルを範囲指定 → G10セルのフィルハンドルで下へコピー! これで画像のような感じになります。 尚、Sheet2のアスタリクス部分に他の詳細費目を入力すればすぐに反映されます。m(_ _)m

dousyutyou444
質問者

お礼

大変丁寧なご回答ありがとうございます。勉強になりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • shorun
  • ベストアンサー率42% (133/310)
回答No.2

エクセル2007で特定の文字が複数ある場合の例です。 1.ファイル家計簿(この例ではBOOK1のシート1)を開いてから、 2.作業用にシート(この例ではBOOK1のシート2)を作成するために、 3.特定の文字に対応する◯◯費、xx代などを入力し、、 4.特定の文字、A列を基準にして、昇順に並べ替える。 5.シート1に戻って、 6.F10に次の式を入力する。 IF(COUNTIF(Sheet2!$A$1:$A$4,Sheet1!$A10)=1,VLOOKUP($A10,Sheet2!$A$1:$C$4,2,TRUE),"") 7.G10に次の式を入力する。 IF(COUNTIF(Sheet2!$A$1:$A$4,Sheet1!$A10)=1,VLOOKUP($A10,Sheet2!$A$1:$C$4,2,TRUE),"") 8.F10の式をコピーして、F列で自動入力が必要なセルに貼り付ける。 9.G10の式をコピーして、G列で自動入力が必要なセルに貼り付ける。 以上で完成ですが、 【蛇足】 例題シート2の作業表は A1からC4の3列4行ですが、A列の項目が不足して、 もし2項目追加すると3列6行になります。 この時の注意事項は 注1.追加後に改めて、上記4.の並べ替えを必ず実行すること。 注2.上記6.の式中、$A$4と$C$4をそれぞれ$A$6と$C$6に変更すること。 注3.上記7.の式中、$A$4と$C$4をそれぞれ$A$6と$C$6に変更すること。 【追伸】 例題では、D列の漢字(携帯引き落とし)を参照して VLOOKUP関数を使用しましたが この関数は漢字ではなく数字(コードNo)を使用した方がエラーが少ないようでなので、 家計簿に(携帯引き落とし)などと入力する代わりに、対象コード表を別に作って 数字で入力すると良いと思います。 例えば、携帯引き落とし のコードNo=3 にしたら、 シート1のD列及びシート2のA列で入力するのは携帯引き落としではなく、3 になります。 このコードNoはシート1、シート2ともに、半角または全角どちらかに統一してください。

dousyutyou444
質問者

お礼

画像つきでご解説いただきありがとうございます。勉強になりました。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばD10セルに加工をしてF列やG列のデータを変えるなどとのことはマクロを使わない限りできません。 関数で対応するとしたらD列やF列に式を入力して対応することができますね。ただし任意に別の文字が入力される場合にはせっかく入力した式も消されてしまいますのでできません。あくまでもD列やF列は式を使って表示させる方法となりますね。それ以外でしたらマクロを使うことになるでしょう。 例えば現在のシートがシート1に有るとしてシート2では例えばA列にシート1のD列で使用される文字列をいくつか並べ、B列には対応するシート1のF列に入力したい文字列を、C列にはG列で使用したい文字列を入力した表を準備します。 例えばシート2のA1セルには携帯引き落とし、B1セルには通信費、G1セルには携帯代と入力しておきます。 その上で例えばシート1のF2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(Sheet2!A:A,D2)=0,"",VLOOKUP(D2,Sheet2!A:B,2,FALSE)) また、G2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(Sheet2!A:A,D2)=0,"",VLOOKUP(D2,Sheet2!A:C,3,FALSE))

dousyutyou444
質問者

お礼

詳しくご解説いただきありがとうございます。勉強になりました。

すると、全ての回答が全文表示されます。

関連するQ&A