Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9730 / 13644 ツリー ←次へ | 前へ→

【25652】VLOOKUP関数やFindのステートメントについて えくせーる 05/6/9(木) 15:53 質問[未読]
【25654】Re:VLOOKUP関数やFindのステートメントにつ... Jaka 05/6/9(木) 17:57 発言[未読]
【25667】Re:VLOOKUP関数やFindのステートメントにつ... えくせーる 05/6/10(金) 9:28 質問[未読]
【25771】Re:VLOOKUP関数やFindのステートメントにつ... Jaka 05/6/14(火) 9:14 発言[未読]
【25665】Re:VLOOKUP関数やFindのステートメントにつ... ちゃっぴ 05/6/10(金) 2:07 発言[未読]
【25669】Re:VLOOKUP関数やFindのステートメントにつ... えくせーる 05/6/10(金) 9:34 お礼[未読]

【25652】VLOOKUP関数やFindのステートメントにつ...
質問  えくせーる  - 05/6/9(木) 15:53 -

引用なし
パスワード
   検索をする場合、
VLOOKUP関数やFindのステートメントを使うと思うのですが、

例)
WorksheetFunction.VLookup("りんご", Range("A1:B1000"), 2, False)
Range("A1:B1000").Find(What:="りんご")

応用で、数値のみや2以上、2より小さいなどの条件式を用いての方法は
どうやるのでしょうか?

●理由
今現在、配列を使って検索してるので重い。

【25654】Re:VLOOKUP関数やFindのステートメントに...
発言  Jaka  - 05/6/9(木) 17:57 -

引用なし
パスワード
   こんにちは。

もう帰るので案だけですが。
オートフィルタだとダメですか?
重いといえば重いかもしれませんが...。

【25665】Re:VLOOKUP関数やFindのステートメントに...
発言  ちゃっぴ  - 05/6/10(金) 2:07 -

引用なし
パスワード
   こちらはどうなったの?と正直言いたくなりますが・・・

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=25611;id=excel

> 応用で、数値のみや2以上、2より小さいなどの条件式を用いての方法は
> どうやるのでしょうか?
> 今現在、配列を使って検索してるので重い。

柔軟性を考えると配列がBestですが、それでは遅いというのですね。

配列を使ってPerformanceで問題になったことはありませんが、
考えられることとしては、

1. 物理Memoryが圧倒的に少ない
  → 増設しましょう。

2. Code(Algorithm)が最低

位しか浮かびませんね。

どちらも、回避策がありますので、そちらをご検討ください。
1. はMemoryを増設するか、On Memoryで処理できるように
  Bufferを小分けにする。
# Open系では、圧倒的に増設するですね。

2. は高速なAlgorithmを採用する。

以上

【25667】Re:VLOOKUP関数やFindのステートメントに...
質問  えくせーる  - 05/6/10(金) 9:28 -

引用なし
パスワード
   おはようございます。

オートフィルターを試してみました、さすがに速いですね。

オートフィルターで、「全角半角を区別しない」命令ありますでしょうか?
知ってたら教えてください。(自分でも調べますが^^;)

Findだと使えるみたいですが、Findは条件を追加できないらしいので…

さらに、オートフィルターで合致したデータ行の取得はどうすればいいのでしょうか?
目的は、合致したデータを再編集してデータ更新するためです。

お願いします。

【25669】Re:VLOOKUP関数やFindのステートメントに...
お礼  えくせーる  - 05/6/10(金) 9:34 -

引用なし
パスワード
   ▼ちゃっぴ さん:
>こちらはどうなったの?と正直言いたくなりますが・・・
>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=25611;id=excel

いろいろと、ありがとうございます。

とりあえず、上の質問に関しては暫定的に自分で作った関数を使うことにしました。(一応解決済み)
他の人もいろいろとマクロ等を考えてくれたので、あとで参考にします。(自分で作ったものよりコードがコンパクトでよさそうなので…^^;)

【25771】Re:VLOOKUP関数やFindのステートメントに...
発言  Jaka  - 05/6/14(火) 9:14 -

引用なし
パスワード
   おはようございます。
オートフィルタだと2条件までしかダメなんじゃないかと思います。

"AA"と"AA"の場合

Dim St As String
St = "AA"
AE = Range("A65536").End(xlUp).Row
Range("A1:A" & AE).AutoFilter Field:=1, Criteria1:="=" & St & "*", _
         Operator:=xlOr, Criteria2:="=" & StrConv(St, vbWide) & "*"
Range("A2:A" & AE).SpecialCells(xlCellTypeVisible).Copy
ActiveSheet.AutoFilterMode = False

9730 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free