• 締切済み

エクセル関数ORエクセルVBAでおしえてください

給与計算です。 年収額によって別のシートから当てはまるデータを抽出する。 データ例 年収:10120000円(毎月変動ある場合を想定している) 別のシートは以下のようなデータです。   年収      1  2   3  4   5   10100-10199  766 788 799 800 1120 10200-10299  899 900 987 988 1198 1、2、3、4、5、とは扶養人数です。 年収をセールに入力→年収範囲(10100-10199)検索→788を抽出する。(扶養2名) このような感じです。VBAは一番いいですが、エクセルでもいいです。 教えて頂けますでしょうか。

みんなの回答

  • sai2003
  • ベストアンサー率36% (28/77)
回答No.3

まず源泉税の一覧を作成します 対象金額          扶養親族等の数 以上    0人    1人    2人    3人    4人 0       0      0      0      0       0 88,000   130      0      0      0       0 89,000   180      0      0      0       0 90,000   230      0      0      0       0 91,000   280      0      0      0       0 といった具合です(一覧表は国税庁からダウンロードできます。適当に体裁を整えましょう) 次に、計算(表示)部分ですが 給与   源泉税   扶養者数 ¥80,000  ¥0 ¥170,000 ¥450     2 こんな具合です。 肝心の源泉税の計算式は 例えば =VLOOKUP(A2,源泉税!$A$25:$F$192,C2+2) =VLOOKUP(給与,源泉税の一覧表(絶対参照),扶養者の数+2) *扶養者の数+2 : ここでの源泉税の一覧表に合わせて  何列目を参照とするか変更しています。 私は、以上の手順で20年くらい前から計算しています。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

年収範囲の入力方法は変えられませんか? 「10100-10199」「10200-10299」のような形では VLOOKUPやMATCHなどの検索関数では使いづらいです。 例えば、年収を範囲の最小値のみ(「10100」「10200」など)にしておき A1:F3に別シートのデータが入っているとすると =VLOOKUP(年収入力セル/1000,A1:F3,MATCH(扶養人数入力セル,A1:F1)) のような式で可能かと思います。 ちなみにこの場合、表に年収0や扶養人数0も追加する必要があります。 そうしないと年収10,100,000未満や扶養人数0人の場合に #N/Aエラーを返してしまいます。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

VLOOKUP関数でできるでしょうね。 ところで、年収はセルに入力するとして、扶養人数はどこかに入力しないのですか? 扶養0人の場合はどうするのですか? 具体的なレイアウト(アドレス)を提示してもらわないと、具体的な回答ができません。 質問が具体的じゃないと、回答も「VLOOKUP関数を使いましょう」という内容になってしまいます。 年収と扶養人数とデータのテーブルのアドレスと、年収と扶養人数を入力するセルと、抽出したデータを表示するアドレスを提示してください。

関連するQ&A

  • エクセル関数について

    エクセルでデータベースを作っています。別のシートからデータを抽出して合計を出すというものなのですが、どうも関数がうまくいきません。 別のシートには日付・現場名・費目・時間・金額などが入力されています。(オートフィルタが使われていました)そしてデータベースには現場名と費目から金額の合計を抽出したいのですが、どんな関数を使っていいのか分かりません。 =SUMPRODUCT((条件1)*(条件2)*....(集計する数値)) =SUMPRODUCT((入力!$C$3:$C$9810=Sheet1!$B3)*(入力!$G$3:$G$9810=Sheet1!C$1)*(入力!$K$3:$K$9810)) というものを使っていたのですが、別シートのデータが入力されていない所まで範囲を指定するとエラーになってしまいます。 =sumifだとエラーにならないのですが、私の技術では1つの条件(現場名だけ)しか抽出、合計できません。 入力されていない所を範囲指定してもエラーにならなくて上の事が出来る関数はないでしょうか、よろしくおねがいします。

  • エクセル VBA ' " ! & の使い方

    エクセル VBA ' " ! & の使い方 VBAを独学で勉強している、超初心者です。 同じシート内でのVBAを作るのはなんとなくできるようになったのですが、別のシートのデータを参照したいときなど、(シート名を変数にしています)うまく動作できません。 ' " ! & の使い方をやさしく解説してください。 よろしくお願いします。

  • 関数 or マクロ(エクセル)

    行の項目と列の項目を検索して重なる部分のデータを拾いたいのですがどうもうまくいきません。初歩的なことかもしれませんが、VLOOKUPとHLOOKUP関数をあわせたようなもの。LOOKUPウィザードでもやってみるのですがうまくいかないのでよろしくお願いします。(最終的にVBAでやりたいです) 元のデータは、(Sheet3)にあって(Sheet2)で項目を並べ縦と横の項目に一致するデータを持ってきたいです。 Sheet3にあるデータは、別のブックよりVBAで検索したデータを持ってきています。 また、Sheet1、2ともその都度行数(検索項目数)が変わるので、できればデータシートの行数にあわせて行きたいのですが・・・こうなるとVBAになると思い挑戦しているのですがこれがまたうまくいきません。 で、データの行数にあわせて拾い出し、A列で最終行を検索して、L列~W列の各列の3行目に、5行目~最終行までの合計を取ろうと思っています。 説明が下手ですみませんが、よろしくお願いします。 環境:Win2000、98 Office2000です。

  • エクセルVBAについて

    エクセルVBA初心者です。 以下のような処理をしたくて、色々な質問等を見て組み合わせて動かしてみたものの、なかなかうまくいかず困っております。アドバイスいただけないでしょうか? 「Sheet1」に以下のようなデータがあります。 <A列> <B列> <C列> ok59  886 ok88 ok70 777 ok75 okGG 478 ok66 ok97 358 ok58 ok69 764 ok47 ok39 368 ok40 okGG 794 ok68 ok85 463 ok75 ・    ・ ・ ・    ・ ・ A列とC列にはそれぞれ「ok+2桁の数字or文字」が入っています。 B列は特に今回は使わないデータですが、数字が入っています。 やりたいことは以下の通りです。 A列に「GG」を含む文字列(実質okGGしかない状態です)が出てきたとき、 その1つ下の行のA列とC列のセルをピックアップし、背景色をピンク色にします。 上の例だと、A列は「ok97」と「ok85」、B列は「ok58」と「ok75」のセルが該当します。 さらにピンク色にピックアップしたセルのから、頭の「ok」を除いた数字を3.5倍した数字を、 別のシートに抽出したいのです。 なので、上の例を使用した場合の抽出したデータは以下のようになります。 <A列> <B列> 339.5 203 297.5 262.5 ちょっと複雑なのですが、どのようにするのがよいのでしょうか? また、別シートに抽出したいのですが、 「Sheet1」の特定のセルに日付が入っているので、 できればその日付の名前のシートを作り、そこに抽出できたらなぁ・・・と考えています。 「Sheet1」にデータを貼り付けて、ボタンをポンっとおしたら日付の名前のシートができて、 欲しいデータが抽出されていく・・・というイメージです考えています。 どうぞよろしくお願いします。

  • EXCELのDCOUNTA関数について

    EXCELで500名程度の名簿管理をしています。 DCOUTA関数を使って、「○○区に住んでいる女性の人数」等の抽出を行っていますが、下記のような不具合があります。 ・同じファイルに名簿シートと抽出シートを分けていますが、抽出シートで計算された数字が名簿シートの実数と一致しません。 (名簿シートの実数は手計算しました。) ↓ ・名簿シートに抽出シートと同じ抽出表をコピーしたところ、実数と一致しました。 ただ、上記のようだと、名簿シートに抽出表も貼りつけることになり、大変見にくいので、シートを分けてもきちんと結果が出るようにしたいのですが、どうしたらよいでしょうか。 なお、範囲名は漢字で「登録者」としています。 ご教授よろしくお願いします。

  • エクセルVBAでフィルタ抽出部分のみのコピー

    エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう? 別シートは指定したセルに値のみの貼り付けをしたいと思っています。 宜しくお願いします。

  • エクセルVBAについて

    はじめてのVBAで本を読んでも使い方がわからないので教えてほしいのですが シート1にこのような表を作成して   A    B    1山田   500 2伊藤 20000 3佐藤    50 ・ ・ ・ シート2に    A   B    C 1    請求書 2 3 山田 4 500円 というような請求書を印刷していくVBAを作りたいのですが人数については10人から300人とその時々で変化するのでデータがないときは 印刷もそこで終わりという風にしたいのですが、、、 よろしくお願いします。 エクセル2003 XPです。

  • エクセルのVBAマクロについて

    エクセルのVBAマクロについて、添付のような物を考えているのですが、宜しくお願いします。 B3~E15に関数を入れて、TRUE となったデーターを表示 させるまでは出来たのですが、このデーターをF~I列へ上から順に (空白行は詰めて)順次記録して行きたいのです。 B3~E15に表示させるデーターは、別シートから抽出し、 切り替えますので、結果を表示させたら、ボタンを押して記録し、 再度別データーを入れたらその下に記録して行くような仕組み を考えております。 宜しくお願いします。

  • 関数式かVBAか、御教授願います。

    関数もVBAも初心者の為、御教授願います。 下記のデータベースから各データをそれぞれシート別に抽出。 シート別に抽出したデータを管理シートとして一枚にまとめたい。 VBAと関数式のどちらがいいでしょうか。 ・データベースから【sheet2】【sheet3】【sheet4】のように展開。 基本フォームはsheetNo.通りで抽出する ・社内サーバーにアップし誰でも確認出来るよう【sheet1】を観閲用とし、メンテナンス不可とする。 ・【sheet1】には展開した【sheet2】【sheet3】【sheet4】を一枚にまとめて表示する。 ・【sheet1】は【sheet2】の総金額の結果に於いて、自動で金額の大きい順から並び変えられる ・【sheet3】は需要家No.別に月別台数を表示させる ・【sheet4】は受注納期から設定納期までの納期期限をカウントダウン。 納期期限を過ぎた場合、遅延期日をカウントアップさせ、且つセルを赤で表示させる。 ・各シート毎の同条件として・・・ (1)同じ需要家No.同士の修理費や修理台数は合算する (2)需要家No.はランダムで入力され入力された時点で各シートに順次アップしていく ・データベースの件数は数千件以上あり、各品種ごとに同様に仕分けする必要性がある。 以上が、やりたいこととなります。 データベースは常にメンテナンスされている状態です。 また、メンテしている方が年配の事務員の方の為、【sheet1~4】は自動入力で操作不可にしようと考えております。 小生はVBAも関数もど素人の為、ネットや参考書などで試みておりますがまともに出来ず困っております。 大変恐縮ですが、関数式、またはマクロの式、掲載して頂けると有難いです。 わかりにくく大変申し訳ありませんが、宜しくお願い致します。

  • 《エクセル2000VBA》「コメント」を抽出することはできますか

    こんにちは、VBAを勉強中の者です。 任意のシート(20000行×30列くらいでデータが入っています)に入力されているコメントのみを別シートに抽出し、一列に一覧表示させたいです。 自分でも調べてみて、とりあえずコメントは操作可能ということはわかったのですが、 ・任意のシートの中身を行と列の二次元に検索していく方法(特定の行のみ検索するコードはあちこちで見受けられるのですが) ・拾ったコメントの内容を別シートに書き込むのを「高速で」行う方法(その都度書き込んでアクティブセルを移動させる…というのならわかるのですが、データの量が膨大なので、これだと途方もない時間がかかってしまいそうです) 以上の方法がわからないでいます。 また、抽出したコメントは、配列関数を使えば処理が早いのでしょうか。 となると、書き込む件数が何件発生するかわからない場合はどうするのだろうか、と行き詰まっています。 (さらに贅沢を言いますと、コメントが入っていたセル番号が隣の列に入っているといいな、という希望もありますが、これはあくまで第二希望です) VBA勉強中ですので、パーフェクトに動くコードでなくても構いません。断片的なヒントでも大歓迎です。 VBAに詳しい方、ご教示頂けますでしょうか。