まだまだエクセル、アクセス等勉強中の者でございます。
試行錯誤しましたが、急ぎということもあり、
アドバイスいただきたく依頼させていただきました。
下記に貼り付けました表が“別シート”にてA、B、C(新規)とあります。
Aメニュー、Bメニューの表は管理簿の位置づけとして用いておりまして、
この二つのシートデータをIDで紐付けて、Cの新規シートにてA、Bメニューごちゃまぜの表を作成したいと考えております。
VLOOKUP関数を用いて作成できたのですが、データが重く開くのにとても時間がかかり、
使わずにできる方法が必要となってしまいました。
また、部署内全員で共有していくため、可能であれば関数で解決して誰でも修正が可能に
できるような形で残していきたいのです。
IFERROR、INDEX、MATCHを使う形ではA、Bの二つの別シートから検索、参照することは
できないのでしょうか。
自分の勉強不足で助けを求めてしまい、お恥ずかしいかぎりではございますが、
急を要します為、どなたかご教示いただけますよう、何卒宜しくお願い致します。
※Aメニュー、Bメニュー、C(新規)は貼り付けた画像とは異なり、“別シート”になります※
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Vlookupの代用で用いられるのは「INDEX(検査範囲,MATCH(検査値,検査範囲,0)※行を確定させる、お好みの列番号 」という形式です。
much関数で、ヒットする行を確定さえて、今回の例だと右にずれたい分の列番号を指定します。
質問の内容からすると
①Aメニューのシートに合致するものがあるかをチェック
②あれば、上記の代用の関数を使って必要な値を持ってくる
③合致がなかった場合は、Aメニューのシートに合致するものがあるかをチェック
④あれば、上記の代用の関数を使って必要な値を持ってくる
⑤いずれもヒットしない場合はエラとする(もしくは代替文字を入れる)
こんな感じの事をされたいのかと思います。
想定通りだと、下記の様な関数になると思います。
IF(iserror(much関数でAシートを参照しているもの),IF(iserror(much関数でBシートを参照しているもの),"データがありません”,(上述の代替関数でBシートを参照しているもの),(上述の代替関数でBシートを参照しているもの)
※見た目重視なので、()の整合性まではとってません。
どのような使用意図や運用シーンがあるのか分からないので一概にはいえませんが、
1シートにしてデータの項目にABメニューを判別する情報を加えて方が運用上楽だと思います。
この手のリスト(マスター)のような情報はそもそも分散して管理するのではなく
一元管理しないとトラブルの温床になります。
個人的には、本来の質問内容からは外れますが、運用方法を変える方をおすすめします。
このたびは質問にお答えいただきまして、ありがとうございます。
お答えいただきました内容にて試してみたのですが、引数が多すぎるため...と表示され、うまくいきませんでした。
自身でもIFERROR,INDEX,MATCH関数を用いた形で試したところ、同じように引数が多すぎるため...と表示されました。
運用方法としましては、AメニューとBメニューの情報は分けることが必須なため、エクセル上で管理するうえでもシートを分ける必要があります。
VLOOKUPを使う以外だとやはり関数では限界なのでしょうか。
No.2
- 回答日時:
Sheet A、B の範囲 C3:F12 に、それぞれ TableA、TableB という名前を付けておけば、Sheet C のセル D1 に次式を入力して、此れを右方および下方にズズーッとオートフィルするだけで、御の字になりますよ。
=IFERROR(IFERROR(VLOOKUP($C4,TableA,COLUMN(B1),FALSE),VLOOKUP($C4,TableB,COLUMN(B1))),"")
「VLOOKUP関数を用いて作成できたのですが、データが重く開くのにとても時間がかかり」とのことだけど、それはVLOOKUP関数の所為ではなくて、参照範囲を必要以上に広大なものにしたからであって、必要最小限の範囲を指定すれば問題ないかと。INDEX、MATCHと大差ないと考えます
このたびは質問にお答えいただきまして、ありがとうございます。
選択範囲にTableAやTableBと名前を付けるというのはAメニュー、Bメニュー各シートのセルをいじらずに可能でしょうか。
また、貼り付けましたシートに関しましては例としてあげたものでございますため、データ量もセルの行で表すとAメニュー:32752、Bメニュー:25931となります。
例としてということを文言で記載しておりませんでした。申し訳ありませんでした。
参考にさせていただきまして、試行錯誤いたします。
No.3
- 回答日時:
他の方と重複しますが
>VLOOKUP関数を用いて作成できたのですが、データが重く開くのにとても時間がかかり
は、
1、ファイルが大きく開くのに時間がかかるのか
2、再計算に時間がかかっているのか
たぶん、1ではないでしょうか。関数を変えても解決しない様な気がします。
運用の問題になりますが、データの全てが必要でしょうか?
別のファイルで必要なデータだけ抽出する機能を付けて
抽出後に、情報が不足している部分を補うリンクなどの方が便利ではないでしょうか。
別のファイルから必要なデータのみ抽出する方法
もう一つのデータの抽出(Microsoft Query)
https://ameblo.jp/hokora2016/entry-12333452045.h …
この辺りが参考になりませんでしょうか。
No.4
- 回答日時:
№1です。
ほかの方へのお礼に書かれているデータ量だとどんな関数を使用しても
ファイルは重たくなりますよ。
関数でマージする量じゃないですね。
ACCESSも勉強されているなら、ACCESS側でマージされる方が
いいと思います。
ACCESSの方が、この手の作業は向いています。
データがどのようになっているのか詳細は分かりかねますが、
ACCESS側で両シートに対してリンクを付けて
テーブル作成クエリと追加クエリを組み合わせて使えばよいのではないでしょうか。
本当は、全部ACCESS側で行って必要な情報をExcelとして吐き出すような
運用の方が無難ですが・・・。
もしかすると、受発注や売上に強く関連するならば、
ちゃんと会社としてシステム化すべき課題のようにも思えるデータ量ですが・・・。
No.5
- 回答日時:
[No.2お礼]へのコメント、
》 選択範囲にTableAや…各シートのセルをいじらずに可能でしょうか
どうしてそのような質問されるのでしょうか?私は「いじってくれ」と書いた覚えもありません。「Sheet A、B の範囲 C3:F12 に、それぞれ TableA、TableB という名前を付けて」のそれ以上でも以下でもありません。ひょっとして「名前を付けて」の意味が理解できないとか?それならそうと書くべきです。
》 データ量もセルの行で表すと…32752、…25931となります。
4万行でも100万行でも同じこと。データ量の制限についても何も触れなかったですよね。
》 試行錯誤いたします
そう、再質問する前に、先ずは試行すべきです。
ただし、試行法が分からなければその旨を簡潔に訊いてください。
それから、VLOOKUP関数は時間が掛かるなんてな勝手な思い込みはしない方がよろしいですよ。そういうことは回答者が考えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Visual Basic(VBA) 条件に一致した場合の処理 2 2022/10/18 06:30
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Excel(エクセル) エクセルの関数について 5 2023/01/26 15:26
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
EXCELで2つのファイルから重複...
-
シート削除して同名シート追加...
-
EXCEL の表を一行ずつシートに...
-
ファンモータが作動しない。
-
エクセルVBAで、特定文字から始...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL 複数行のデータを1行にま...
-
excelの不要な行の削除ができな...
-
エクセルで複数の条件を抽出し...
-
エクセルで名簿を50音で切り分ける
-
エクセル マクロ "特定の日付...
-
【マクロ】同じフォルダ内にあ...
-
実行時エラー’438 の解消
-
Excelクエリで日付がうまく抽出...
-
excel vlookup 新担当者への実...
-
エクセルで一覧表から担当別シ...
-
エクセルのカメラ機能について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
excelの不要な行の削除ができな...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
オートフィルタで抽出したデー...
-
エクセルのカメラ機能について
-
(VBAにて)日付でデータを抽出す...
-
エクセルで名簿を50音で切り分ける
-
別々のシートの表をピボットテ...
-
Excel 売上管理シートに入力し...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL の表を一行ずつシートに...
-
エクセルVBAで、特定文字から始...
おすすめ情報