No.2ベストアンサー
- 回答日時:
オートフィルタを使っているという事は、必ず一意に絞り込める保証があるなら、ワークシートのどこかてきとーな場所にcriteria領域を(一時的に・または恒常的に)準備してDGET関数を使った方がシンプルで高速です。
実は複数ヒットする可能性があるなら、同様にcriteria領域を仮に用意してAdvancedFilterを使ったほうが高速です。
今いったいどんなマクロで「処理が遅い」のか判りませんが、application.calculationをxlcalculationmanualにしてからオートフィルタで絞り込んでみると、改善するかも?しれません。
作成例:
application.screenupdating = false
application.calculation = xlcalculationmanual
range("A:C").autofilter field:=1, criteria1:=23
range("A:C").autofilter field:=2, criteria1:="A"
set res = range("C65536").end(xlup)
activesheet.autofiltermode = false
application.calculation = xlcalculationautomatic
application.screenupdating = true
if res.row = 1 then
msgbox "NOT FOUND"
else
msgbox res.value
end if
大変にありがとうございます
少し私のレベルを越えて難解な所も多いですが、調べて参考にさせて頂きます
出来れば「回答3の補足項目」を見て頂き、更にアドバイスして頂ける所があれば
是非お願いします
No.5
- 回答日時:
回答4さまがおっしゃる通り、質問がまるっきり変わってますね。
まず、
> [23,A,が-2384]、[23,F,が+2384]ですが、
こうなる理屈がさっぱりわかりません。
続いて、
> 時には表Aの[23,A]の5384と[24,A]の5373が合計され、
> 表Bに[28,M]の10757と表示されている事もあります
これを判断する条件が一切不明です。
この辺りはなんらかの人的な判断が必要なのではないですか?
私の理解力が劣っているだけかもしれませんが、
人にたいして説明しきれない処理をプログラミング出来るはず無いと思いませんか?
なので、すいませんが
> そのため30回近くAutoFilterを繰り返さなければなりません。
> もっと簡単に出来る知恵があればよいのですが・・・
> どんなヒントでも構いませので宜しく願いします
この部分のヒントだけ、
30回近く処理を繰り返すように、Do~LoopまたはFor~Nextを使って書いてやればOK。
あとはご自身で調べるなり、他の回答がつくまで待つなり、質問しなおすなり、
なんとか解決の糸口をつかんでくださいませ。
No.4
- 回答日時:
人の回答に寄せられた補足を横取りして回答するような、そんな泥棒紛いの無礼なマネはしたくありません。
それに「実は」と言いながら、元のご相談とはまるで無関係なご質問にすり替わってます。一回このご相談は解決で閉じてから、改めて本当にヤリタイ事をキチンと詳しく情報提供して投稿し直してみたらどうですか。
一応ご参考までに。
どんなデータからどんな理屈でどんな結果が欲しいのか、さっぱり不明です。
それにご利用のエクセルのバージョンも不明のご相談ですが、エクセル2007以降を使い、SUMIFS関数で計算させるのが一番簡単で手っ取り早いんじゃないかなと思います。
理解不明な時はキチンと正しい状況説明を添えて、仕切り直してご相談を投稿し直して下さい。
要領を掴めずわかりにくい事を書いて申し訳ありません
皆さんからアドバイス頂いた内容から自分なりにトライしてみます
いろいろ勉強になりました
No.3
- 回答日時:
どのように「時間がかかる」んでしょう?
・行数が多すぎて、オートフィルタのレスポンスが遅い
・オートフィルタの条件を指定するのに手間がかかる(=面倒)
とりあえず、5万件のダミーデータで確認しましたが、
フィルタ処理自体は1秒未満で終わりました。
特別高性能なパソコンは使用していません。
いわゆる、ミドルスペックくらいのものです。
なので、「時間が・・」は後者と断定して進めさせていただきます。
(異論がございましたら、補足くださいませ。)
準備として、
・A2セルに"オーダー"の検索値(今回は「23」)
・B2セルに"記号"の検索値(今回は「A」)
・4行目に項目名("オーダー"・"記号"・"数値"などの文字列)の行
・5行目以降にデータ行
をご用意ください。
で、コードは以下。
Sub Macro1()
With Range("A4:C" & Range("A65535").End(xlUp).Row)
.AutoFilter
.AutoFilter Field:=1, Criteria1:=Range("A2")
.AutoFilter Field:=2, Criteria1:=Range("B2")
End With
End Sub
あとはボタンにでも登録しておいて、
A2・B2セルを打ち変えてお試しくださいませ。
「列がもっとある」なら、コード中の"A4:C"の「C」を適宜、
項目行を4行目以外にするなら、"A4:C"の「4」を適宜、
それぞれ打ち変えてくださいませ。
この回答への補足
大変ありがとうございます、実は下記のような表A,Bの[オーダー列][記号列]のどこか1個所または数か所が違う表を比較・検索し数値の増減を調べています。そのため表Bの項目を上から順に変数に代入、表Aを順にAutoFilterし、Filterされた合計値が表Bの数値と同じかどうか比較しています
そのため30回近くAutoFilterを繰り返さなければなりません。もっと簡単に出来る知恵があればよいのですが・・・どんなヒントでも構いませので宜しく願いします
表A 表B
オーダー 記号 数値 オーダー 記号 数値
21 A 5367 21 A 5367
25 B 5380 25 B 5380
25 E 5369 25 E 5369
22 D 5370 22 D 5370
21 C 5371 21 C 5371
23 A 5384 23 F 5384
24 A 5373 24 A 5373
因みにこの表で導き出したい答えは、[23,A,が-2384]、[23,F,が+2384]ですが、時には表Aの[23,A]の5384と[24,A]の5373が合計され、表Bに[28,M]の10757と表示されている事もあります
No.1
- 回答日時:
ご回答します。
VBAと記載していますが、関数で十分可能です。
1.表の左側欄外に、オーダーと記号を連結した列を作成する
2.VLOOKUP関数を利用して、検索する。
=VLOOKUP("23A",a2..D100,4,false)
上記の関数のパラメータは多少誤りがあるかもしれません。
ヘルプとかで研究してみてください。
よろしくお願いします。
この回答への補足
ありがとうございます
私の理解が浅いのか、どうやってオーダーと記号を連結した文字列で、VLOOKUPをかけるのでしょうか
エラーになるように思うのですが、
何か方法があるのであれば、宜しくお願いします
また、それは検索項目が複数ある場合にも活用出来るでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) エクセルのvlookupについて質問です 3 2023/01/05 15:15
- C言語・C++・C# numpyスライス機能を使った数値計算 2 2023/05/08 16:01
- Excel(エクセル) Excelで関数を使って入力した値を、関数を抜いた値として扱いたい 1 2022/07/08 02:10
- Excel(エクセル) VLOOKUPで、検索先が3シートに分かれていて、番号の大小で検索するとエラーになります。 6 2023/07/14 19:09
- Visual Basic(VBA) vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002 1 2023/01/28 14:29
- Excel(エクセル) Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録 4 2022/09/07 22:46
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) Excelの関数についての質問です。(vlookup関数) A列 B列. C 1 大阪 50. 検索 6 2023/08/11 13:35
- Excel(エクセル) Excelの関数についておしえてください。 3 2023/04/20 18:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
尿検査の前日は自慰控えたほう...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
EXCELで式からグラフを描くには?
-
変な話しになります。尿検査で...
-
excelでsin二乗のやり方を教え...
-
エクセル指定した範囲からラン...
-
Excelで""で囲む方法
-
ある範囲のセルから任意の値を...
-
2つの数値のうち、数値が小さい...
-
精子が黄色?
-
エクセルでエラーが出て困って...
-
納豆食べた後の尿の納豆臭は何故?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報