エクセル内で別シートから情報を読み込んで集計シートに反映させているのですが読み取り項目を15列100行から15列640行に増やしたら処理速度がとんでもなく遅くなってしまいました。今はいない人が作ったものをいじっただけだったのでよくわからずやってしまったところもありどうしたらいいのか教えてください。
列
B8:=VLOOKUP(操作画面!C6,INDIRECT("Sheet1!A10:DO100"),操作画面!E6,FALSE)
C8:=VLOOKUP(操作画面!C7,INDIRECT("Sheet1!A10:DO100"),操作画面!E7,FALSE)
D8:=VLOOKUP(操作画面!C8,INDIRECT("Sheet1!A10:DO100"),操作画面!E8,FALSE)
~
P8:=VLOOKUP(操作画面!C20,INDIRECT("Sheet1!A10:DO100"),操作画面!E20,FALSE)
行
B8:=VLOOKUP(操作画面!C6,INDIRECT("Sheet1!A10:DO100"),操作画面!E6,FALSE)
B9:=VLOOKUP(操作画面!C6,INDIRECT("Sheet2!A10:DO100"),操作画面!E6,FALSE)
B10:=VLOOKUP(操作画面!C6,INDIRECT("Sheet3!A10:DO100"),操作画面!E6,FALSE)
~
B683:=VLOOKUP(操作画面!$C$6,INDIRECT("Sheet676!A10:DO100"),操作画面!$E$6,FALSE)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
突っ込みどころが多過ぎてどうしたものやら……
VLOOKUP関数自体が処理を重くする原因に繋がります。列の範囲が多い
場合は INDEX/MATCHに切り替える方が少しだけましです。
もっと処理を速くしたいなら 絶対一致検索自体を止めて データを昇順に
並び替えた上で近似値検索×2にした方が良いです。
次に INDIRECT関数は論外です。この関数は TODAYや RANDなどと同じ
で結果が常に揮発します。大量に入れると全く関係ないセルを編集しても
いちいち再計算がかかります。なので基本的には1つたりとも使わないの
がベストです。真っ先に見直すべきはここです。
INDIRECTや OFFSETは条件付き書式や入力規則以外では使わないものと
思っておいた方がいいくらいです。
その上で範囲をテーブル書式にして構造化参照にすれば無駄が省けます。
いちいち範囲を指定するのも無駄なので。
もっというならそもそも シートを大量に1ブックに入れるような作り方
からして見直すべきです。検索のデータは一元管理が基本中の基本です。
おそらく修正するのも難しいくらい重くなっているでしょうから まずは
自動計算を手動にしてから 数式を見直すのがいいかと思います。
No.3
- 回答日時:
これは、様式の同じデータシートをSheet1~Sheet676という名前で、同じbookに入れて、
❶そのbookの中に操作画面というシートを作ってあって、その操作画面というシートの(C列とE列に)、
❶-1 Sheet1~676のA列にある値の中で検索する名前をC列に、
❶-2 その検索できた名前のある行の中で引き出す数値などの値があるはずの列位置をE列にいれておいて
❷別途、質問文に記載されている数式があるシートも、同じbookにあって、そのシートのイメージが画像で
(この画像では、Sheet1~Sheet676があるようには見えないけれども)
6行目には Sheet1からの検索結果を横に並べて表示する
7行目には Sheet2からの検索結果を横に並べて表示する
8行目には Sheet3からの検索結果を横に並べて表示する
| |
676行目にはSheet671からの検索結果を横に並べて表示する
ということでしょうか。
試しに、800枚のシートのそれぞれに、10~100行×A~ET列に文字データを入れて、似たようなことをしてみました。
一応動きます。
ですが、800枚のシートのそれぞれに、10~100行×A~ET列に数式で値が出るようにしたら、処理時間がとんでもないことになりました。
これは、EXCELが自動的に全部のシートの全部の数式を再計算しなおしているからなので、
この自動的に再計算するのを止めてしまうと、処理時間が大幅に短縮されることもあります。
その方法は、 https://next.rikunabi.com/journal/20180401_s01/
ただ、目的によっては、別の方法の方がイイケースもあります。
もともと、Sheet1~~に数式がなくて、データの値だけが入っているようにしておけば、
操作画面というシートや、結果をだすためのシートのB8:P700に検索用の数式が入っていても、それほど処理時間は懸からないと思います。
もしも、Sheet1などのデータを他の処からコピーしてくるのであれば値だけを貼り付けるとか、データや数式を貼り付けた後でもそのシート全体をコピーしてから値の貼付をすれば、できます。
https://www.excelspeedup.com/ataiharituke/
なお、別件ですが、【結果を出すためのシート】がただの縦横表の様にみえます。 ということから想像すると、画面操作シートのC列やE列のデータのどちらかは何か規則性があるか、同じデータが続いているように思えます。
もしも、そうならば、操作画面シートの作り方を変更して、それに合わせて、【結果を出すためのシート】の数式も直すと、使いやすくなるかもしれません。(たぶん処理速度は実感に出るほどの差はでないけれど)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 指定セル繰り返しマクロ 4 2022/06/06 17:08
- マウス・キーボード real vnc viewer で遠隔先で操作が出来ない。 2 2023/07/24 15:00
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- YouTube youtubeは画面と操作パネルが別々に表示されていたのに画面上にかぶるように表示されるようになった 1 2022/05/08 10:04
- その他(パソコン・周辺機器) win11でオフィス11のエクセルについて 1 2022/07/31 19:52
- Safari(サファリ) インターネットの画面を左右に寄せて閲覧する方法を教えてください 1 2022/05/18 21:03
- Safari(サファリ) iPhoneのSafariで動画を全画面表示で見ている時、右上の音量調節バーを操作しようとするとコン 1 2022/09/30 21:10
- その他(OS) パソコン BIOS Utility から起動しない 1 2022/07/31 18:12
- iPad iPad で Apple Pencil を使いメモアプリで文字をキーボードから打ち込みたいのですが描 2 2022/10/05 20:49
- その他(暮らし・生活・行事) 画面割れしたんですけど、画面割れしたのが画面の下の方なのに、画面の上半分がタッチ操作出来ないんです。 1 2022/08/05 16:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報
ちなみに列や行は毎回全部使うわけではなく5列10行といった毎回異なる使用をします。