こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel2007でのデータ抽出

前任者が作ったExcelでの給料計算表を使用していますが、先日そこに金種計算表を組み込めないかと言われました。
当方VBAなどは全くの初心者です。
VLOOKUP関数を使ってデータテーブルから金額を読み込み金種計算が出来るようにはしてみたのですが、データテーブルを更新すると金種計算表にある数式がエラーを吐いてしまいます。

金種計算表には一行目から
=IF(B4="","",VLOOKUP(B4,テーブル!D4:BG4,10))
と関数を入れてあります。
B4は氏名欄です。
その際にはちゃんと金額が表示されていますが、入力フォームからデータテーブルを更新すると
=IF(B4="","",VLOOKUP(B4,テーブル!#REF!,10))
となってしまいます。

金額を手入力すればいいのですが、全社員分となると膨大な量になってしまいます。
なんとか自動で抽出出来ないものでしょうか。
お知恵をお貸しいただければ幸いです。
稚拙な説明ではありますがよろしくお願いします。

投稿日時 - 2008-11-19 11:07:26

QNo.4490759

困ってます

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

>入力フォームからデータテーブルを更新すると=IF(B4="","",VLOOKUP(B4,テーブル!#REF!,10))
入力フォームのVBAにて行の削除とか挿入とかを実行しているのではないでしょうか?
>VLOOKUP(B4,テーブル!D4:BG4,10)
検索する行は1行でよいのでしょうか、VLOOKUP関数の意味がないのですが。
>B4は氏名欄です。
テーブルの氏名データは氏名順に並んでいるのでしょうか?
VLOOKUP(B4,テーブル!D:BG,10,0)にしてみては如何でしょうか。
計算表とテーブルにシート構成を提示してないので何ともアドバイスできないです。
一度、VLOOKUP関数のHelpを参照して、やりたい内容とあっているか確認してみてください。
別案ですが、ピボットテーブル は試して見られましたか
氏名の一覧表も自動で作成されて便利ではないでしょうか。

投稿日時 - 2008-11-19 13:07:53

お礼

>入力フォームのVBAにて行の削除とか挿入とかを実行しているのではないでしょうか?
そのとおりだと思います。

>検索する行は1行でよいのでしょうか、VLOOKUP関数の意味がないのですが。
1行ではなくデータテーブル全体です。
説明が甘かったようです、すみません。

>VLOOKUP(B4,テーブル!D:BG,10,0)にしてみては如何でしょうか。
これをやってみたところ、ズレもエラーも発生しませんでした。
助かりました。ありがとうございました。

ピボットテーブルも考えてみたのですが、何分勉強不足で使いこなせませんでした。
これから知識を増やして使えるように頑張ってみます。
ありがとうございました。

投稿日時 - 2008-11-19 15:22:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

VLOOKUP関数で、『D4:BG4』という表記はあまりやらないです。
例えば、『$D$1:$BG$100』みたいに範囲指定する方が一般的です。

『D4:BG4』のように4行目だけを参照するなら、
VLOOKUP関数をわざわざ使用しなくても別の方法で簡単にできます。
『=M4』で解決する事になります。

投稿日時 - 2008-11-19 12:23:45

補足

すみません、サンプルの書き方が悪かったようです。
この場合は1行のみなのですが、実際は社員全員分のデータ内からの検索、抽出となりますのでD4:BG120が検索範囲となります。

範囲指定をしてやってみます。
ありがとうございます。

投稿日時 - 2008-11-19 15:07:55

お礼

お礼をつけるつもりが補足のところに書いてしまいました。
すみません。

投稿日時 - 2008-11-19 15:19:25

ANo.1

ふと思ったのですが、
編集メニューの「置換」で
#REF!

D4:BG4
に「すべて置換」すればどうなるでしょうか。
「すべて置換」は対象セル範囲を選択して行ってください。

投稿日時 - 2008-11-19 12:14:45

お礼

「すべて置換」をやってみたのですが、今度は#N/Aエラーが出てきてしまいました。
もう少し勉強して色々やってみようと思います。
ありがとうございました。

投稿日時 - 2008-11-19 15:18:00

あなたにオススメの質問