VBAの初心者です。

各コマンドの意味もよく理解してないため、原因が判りません・・・。

■特定情報を抽出するVBAの結果が合致しません。

 ・Record数が「5000件」あるExcelFileから、Field:3に「1」が入力されているRecordを抽出するVBAを作りました。

 ・ExcelsheetでFilterにより抽出するとField:3には「1」が「839件」入力されています。
  しかし、実際に作成したVBAを走らせてみると「800件」しか抽出できません。


■下記が作成したVBAです。
--------------------------------------------
1)Private Sub task_Select2()
Range("F1").Select
Selection.AutoFilter Field:=6, Criteria1:="=1", Operator:=xlAnd
Rows("3:5503").Select
Range("B3").Activate
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=6
ActiveWindow.LargeScroll Down:=-13
Range("B1").Select
End Sub

2)Private Sub backup_task2()
'バックアップ用コピー処理
Dim Model As String, fName As String
Model = ActiveSheet.Name
fName = Model & "_wo"
Worksheets(Model).Copy After:=Worksheets(Model)
ActiveSheet.Name = fName
Worksheets(Model).Activate
End Sub

3)Private Sub task_Select3()
Selection.AutoFilter Field:=3, Criteria1:=">1", Operator:=xlAnd
Rows("3:10000").Select
Range("B3").Activate
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=3
ActiveWindow.LargeScroll Down:=-25
Range("B1").Select
End Sub

4)Sub A_Main_task()
'動作用メイン処理
Application.Run "backup_task"
Application.Run "task_Loop"
Application.Run "CommentMix"
End Sub

5)Private Sub backup_task()
'バックアップ用コピー処理
Dim model As String, fName As String
Model = ActiveSheet.Name
fName = Model & "_copy"
Worksheets(Model).Copy After:=Worksheets(Model)
ActiveSheet.Name = fName
Worksheets(Model).Activate
End Sub
--------------------------------------------

1)でField:6に情報が入力されてないRecordを削除。
3)でField:3に「1」以外が入力されているRecordを削除。

●1)の「Rows("3:5503").Select」でRecord「5000件」なら問題ないと思いましたが、
  1)の結果は「4770件」でした。(5000件になると思ったのですが・・・)

・5000件以上のRecordを処理させようと思い、「Rows("3:5503").Select」の範囲を単純に増やしても1)の結果が減ってしまいます。

◎Record数が「2700件」程度の情報は問題なく目的数の情報を抽出できました。

●来週18日の月曜日中になんとか作成したい資料なのです。
  お手数ですが宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

ステップ実行して


デバッグのステップイン F8
で実際に思うようなフィルターになっているのか確認してみてはいかがですか。

こちらではC列0から4までのデータで10000行でもちゃんと1のデータだけが残りましたよ。

ところで
1)Selection.AutoFilter Field:=3, Criteria1:="=0", Operator:=xlAnd
2)Selection.AutoFilter Field:=3, Criteria1:="<>1", Operator:=xlAnd

2回同じフィールドにフィルターをかけていますが
"=0"は"<>1"に含まれますから2)のコードだけでいいのではないでしょうか?
    • good
    • 0

フィルターの▼が付いているセルの先頭がA列としたら


Field:3はC列になります(B列が先頭ならD列)がそこが対象として結果はあっていますか?

この回答への補足

迅速な返答、ありがとうございます。

■補足記載の内容が間違ってした。
----------------------------------------------------------------
C. 1)のRows("3:5503")を("3:5503")に変更し、「7974件」のデータを集計した
   ところ、3)の抽出結果は「1件」でした・・・。

    ↓
  「1)のRows("3:5503")を("3:10000")に変更」
----------------------------------------------------------------

●Cellの先頭は「A列=Field:1」、「C列=Field:3」で合ってます。

  ・抽出Dataの参照列は、「C列」です。

 修正したVBAによる集計結果は、下記の通りです。

 【3,804件でRecord空欄無し】 ※正常抽出Data

 ************************
 下記に修正
1)Selection.AutoFilter Field:=3, Criteria1:="=0", Operator:=xlAnd
Rows("3:5503").Select
Range("B3").Activate
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=3

3)Private Sub task_Select3()
Selection.AutoFilter Field:=3, Criteria1:="<>1", Operator:=xlAnd
Rows("3:10000").Select
Range("B3").Activate
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=3
ActiveWindow.LargeScroll Down:=-25
Range("B1").Select
 ************************

 A. DataRecord総数= 3,804件
 B. 1)でのRecord削除結果= 3.804件
 C. 3)でのRecord削除結果= 678件  ・・・・・ 「1」の入力数
 D. 元Dataの「Field:3(C列)」でのFilter結果= 678件

 ⇒目的Dataの抽出に成功!


 【7,974件でRecord空欄無し】 ※1件しか抽出せず

 *************************
1)のRows("3:5503")を("3:10000")に変更
 *************************

 A. DataRecord総数= 7,974件
 B. 1)でのRecord削除結果= 7,974件
 C. 3)でのRecord削除結果= 1件  ・・・・・ 最初のRecordのみ
 D. 元Dataの「Field:3(C列)」でのFilter結果= 1,232件
   ※「1」の入力数=1,232件

  ・Rows("3:10000")で項目Recordの1行目と必ずDataの入っている
   2行目のRecord以下の3列目から集計対象にしているため、2行目
   の集計範囲外Recordのみ抽出しています。

 ⇒目的Dataの抽出に失敗 

●とりあえず、5000件を超えるデータは、5000件以下に分けて集計を
 行えば、目的のDataを抽出できました。

  ・初心者には難しいですね・・・。

補足日時:2011/04/18 20:07
    • good
    • 0
この回答へのお礼

新期や月末/月初の処理が多忙になり、お礼の入力が遅れてしまい申し訳ありません。

当該作業に注力できない状況になってしまったため、集計可能なレコード数を複数回に分けて集計することで処理しました。

参考となる情報、ありがとうございました。

お礼日時:2011/05/26 15:11

> 1)でField:6に情報が入力されてないRecordを削除。



Field:=6, Criteria1:="=1"
ですのでField:6が1と等しい行を削除していますが、それでいいのでしょうか。


> 3)でField:3に「1」以外が入力されているRecordを削除。

1以外だと通常
Criteria1:="<>1"
と指定されると思われます。


ですので

> ●1)の「Rows("3:5503").Select」でRecord「5000件」なら問題ないと思いましたが、
>   1)の結果は「4770件」でした。(5000件になると思ったのですが・・・)

1)の前提が違うのではないでしょうか。

この回答への補足

お世話になります。

早速のご指摘、ありがとうございました。

この部分は、退職者が作成したため確認を取れませんが、「Field:=6」には
「1」が入力されることが無いため、「=1」で入力されていないRecord(空欄)
を削除する意図だと思います。

「Field:=3」には「1~4」の数値のみが入力されるため、「>1」で「2~4」を削除し、
「1」を抽出することが意図だと思います。

【修正内容】
 A.「Field:=6」は、年月「yyyymm」が入力されています。
  ・これを「Field:=3」(1~4の数値入力Field」に修正し、「=0」に変更して入力
   の無いRecord削除を意図しました。

 B. 3)の削除記述を「<>1」に修正しました。

 これにより、5000件以下のデータ集計は、正常に抽出できました。
 (Field:3に入力された「1」のデータ739件を正常に抽出)

 C. 1)のRows("3:5503")を("3:5503")に変更し、「7974件」のデータを集計した
   ところ、3)の抽出結果は「1件」でした・・・。
   ※本来、Field:3には「1」の入力されたデータが1232件存在します。

   A及びBの修正では、根本的な解決になっていない様子です。

補足日時:2011/04/18 16:29
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q空気清浄機の換えフィルター買うか、買い換えるか迷ってます

質問タイトル通りなのですが、居間で使っている空気清浄機のフィルターを交換しなければいけないのですが、新しい換えフィルターを買ってそのまま使い続けるか、空気清浄機の本体を買い換えるか迷っています。

今使っているものは、4年半前に3万円弱で買った、ダイキンの光クリエール(ACEF3DS-A)です。年月が結構経っているので、今出ているものでこちらと同等程度の能力の空気清浄機を購入すると、どのような製品があって、実勢価格はどのくらいなのか教えていただけるとありがたいです。
またおすすめの空気清浄機も教えていただけるとありがたいです。

よろしくお願いいたします。

Aベストアンサー

洗っちゃいけませんよ絶対に。
光クリエールはロールフィルターで7回分、通常年1回の交換で7年分の予備ロールが入っているはずですがそれはもう使っちゃったんですね。
「交換」のランプが点灯するまでは使えますので、かなり汚れたなと思っても交換せずに粘り強く使い続けましょう。フィルター以外に光で汚れや臭いの成分を分解することになってますのでロールフィルターが多少汚れていても性能は悪くならないはずです。よほどのヘビースモーカーとか焼き肉屋で使用していない限りは。
ロールフィルターを交換して空気清浄機を使っても臭いが全然なくならないとかなればやはり買い替えでしょうか。
空気清浄機の性能はドンドン向上してますので、買い替えもいいかもしれません。最近はアレルギーの原因となる花粉やダニの糞などを不活性化させるものが流行です。あとシャープのイオンクラスターとか。
今度のダイキン(MC706)はインフルエンザウイルスをも不活性化させる抗体フィルター付きが売りです。40000円弱するようです。
冬には加湿器と合わさったハイブリッド型も出ます。
でも5000円で交換ロールフィルターを買われたほうがいいかもしれません。ロールフィルターもマイナーチェンジして性能が上がっているようです。
価格は価格.comを見てください。
http://kakaku.com/sku/pricemenu/aircleaner.htm
ダイキンの新製品プレスリリースは下記
http://www.daikin.co.jp/press/2004/040817/index.html

洗っちゃいけませんよ絶対に。
光クリエールはロールフィルターで7回分、通常年1回の交換で7年分の予備ロールが入っているはずですがそれはもう使っちゃったんですね。
「交換」のランプが点灯するまでは使えますので、かなり汚れたなと思っても交換せずに粘り強く使い続けましょう。フィルター以外に光で汚れや臭いの成分を分解することになってますのでロールフィルターが多少汚れていても性能は悪くならないはずです。よほどのヘビースモーカーとか焼き肉屋で使用していない限りは。
ロールフィルターを...続きを読む

QVBAで特定の条件に合致しているデータを抽出する方法

家計簿シート○月.xlsで
Sheet1には
列A:収入、列B:支出、列C:(支出/収入)率(%)
で、行にはそれぞれの値が入力されています。
具体的には

  A   B   C
2 収入 支出  率
3 1000 950  95%
4 500  250  50%
5 2000 4000 200%
  :  :  :
 
ここで、

1:ボタンを押すと
   ↓
2:読み込むファイルを聞いて、ここで
  家計簿シート○月.xlsを読み込んで(開いて)
   ↓
3:Sheet1の列Cの値が90%以上の行だけを抜き出して
(抽出して)
   ↓
3:それをSheet2に表示する
  (2行目の収入、支出、率という文字列も入れて)

というプログラムをVBAで組みたいのですが
どう組めばいいのかアドバイスをお願いします。

Aベストアンサー

Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
k = 1
sh2.Cells(k, "A") = sh1.Cells(1, "A")
sh2.Cells(k, "B") = sh1.Cells(1, "B")
sh2.Cells(k, "C") = sh1.Cells(1, "C")
k = k + 1
d = sh1.Range("A65536").End(xlUp).Row
For i = 2 To d
If sh1.Cells(i, "c") >= 0.9 Then
sh2.Cells(k, "A") = sh1.Cells(i, "A")
sh2.Cells(k, "B") = sh1.Cells(i, "B")
sh2.Cells(k, "C") = sh1.Cells(i, "C")
k = k + 1
End If
Next i
End Sub

Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
k = 1
sh2.Cells(k, "A") = sh1.Cells(1, "A")
sh2.Cells(k, "B") = sh1.Cells(1, "B")
sh2.Cells(k, "C") = sh1.Cells(1, "C")
k = k + 1
d = sh1.Range("A65536").End(xlUp).Row
For i = 2 To d
If sh1.Cells(i, "c") >= 0.9 Then
sh2.Cells(k, "A") = sh1.Cells(i, "A")
sh2.Cells(k, "B") = sh1.Cells(i, "B")
sh2.Cells(k, "C") = sh1.Cells(i, "C")
k = k + 1
End...続きを読む

Qマスクに使われる活性炭と空気清浄機のフィルターなどに使われる活性炭の違

マスクに使われる活性炭と空気清浄機のフィルターなどに使われる活性炭の違いは?

マスクに使われる活性炭フィルターは、活性炭の効果持続時間が1日程の物が多いようですが、
空気清浄機の活性炭フィルターは持続期間が1年間などのものがあります。

同じ活性炭なのに、どうしてこれほど効果持続時間に違いが出るのですか?

また、空気清浄機などに使われる活性炭フィルターを適当なサイズに切断してマスクの中に仕込めば1年間くらい使える活性炭マスクとして使用できますでしょうか?(もちろんマスクのフィルター以外の部分を1年間も使う気はないですが^^;

Aベストアンサー

想像ですが、
活性炭そのものに違いはないと思います。活性炭は表面の細かな穴に、ゴミ、細菌、匂いの分子などを取り込むことで機能しますから、穴がゴミでいっぱいになれば、それで使えなくなります。
マスクの活性炭は薄く並べてあるので、いっせいに全部の活性炭の穴が詰まりますが、空気清浄機のは、ある程度厚みがあるので、表面に近い側の活性炭から順に穴が詰まっていくのではないでしょうか。

Q二枚のシートから各シートへの抽出

すみません、日を改めての再投稿です。

会計処理する上で下記のような方法が出来るかどうか教えて下さい。

「普通預金」シートと「現金」シートがあり明細を記入していきます。

項目には「日付」「摘要」「収入」「支出」「残高」があります。

そこで項目に「番号」を追加し、下記の通りに置き換えます。

会議費=1

「会議費」シートを作成し、「普通預金」と「現金」シートに記入した分は会議費シートに
追加されていくという方法は可能でしょうか?

わかりづらい説明で大変申し訳ありません。
現在の方法だと、例えば「現金」で「会議費」を支払ったとすると、

「普通預金」と「会議費」

2枚に記入しなくてはならないため間違いも起こりやすくなっています。

「普通預金」か「現金」シートに記入すれば自動的に「会議費」に反映されるようにしたいということです。

一応画像も作成してみたのでご参考になれば幸いです。

よろしくお願いいたします。

Aベストアンサー

No.2です!
続けてお邪魔します。

前回の続きです。

「現金」Sheet見出し上で右クリック → コードの表示 → VBE画面に↓のコードをコピー&ペースト

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から
Dim k As Long
k = Cells(Rows.Count, 2).End(xlUp).Row
If Cells(k, 7) = 1 Then
Call ThisWorkbook.会議費マクロ
End If
End Sub 'この行まで

同様に「普通預金」Sheetにも全く同じコードで良いですのでコピー&ペーストしてみてください。

尚、会議費SheetのH列に作業用の列が見えていますが、目障りであればH列を非表示にしておいてください。

尚、すべてのSheetにまだデータがない場合は「会議費マクロ」は実行する必要ありません。
「現金」「普通預金」Sheetに入力すれば自動的に「会議費」Sheetに反映されると思います。

お役に立てば良いのですが、他に良い方法があればごめんなさいね。m(__)m

No.2です!
続けてお邪魔します。

前回の続きです。

「現金」Sheet見出し上で右クリック → コードの表示 → VBE画面に↓のコードをコピー&ペースト

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から
Dim k As Long
k = Cells(Rows.Count, 2).End(xlUp).Row
If Cells(k, 7) = 1 Then
Call ThisWorkbook.会議費マクロ
End If
End Sub 'この行まで

同様に「普通預金」Sheetにも全く同じコードで良いですのでコピー&ペーストしてみてください。

尚、会議費...続きを読む

Q空気清浄機購入後2年たったら…本体買い替え派?フィルター交換派?

空気清浄機を購入しようと色々店頭やインターネットショップを見てましたら、空気清浄機自体は多種類置いてあるのですが、交換フィルターはあまり置いて(扱って)いません。
店頭ですと取り寄せになることが結構あるみたいです。
私が購入を検討しているのはわりと新しい型なのですが、インターネットショップを何軒も探してやっと見つけました。
見つけた時に、ふと疑問を持ちました。
これは、2年(フィルターの一般的寿命)たったら空気清浄機自体を買い換えるのが一般的、というかそうする人が多いからなのか?と。
あなたなら新しい型の本体を買い換えますか、それとも取り寄せてでもフィルターを交換しますか?
できれば理由も添えて、ご回答お願いします。

Aベストアンサー

古い機種であっても、フィルターは下位互換を持たせている事が多い(←数が少ないのはこういう理由です)し、フィルター自体の性能もアップしてるでしょうから、よっぽど画期的な機能が本体に追加されない限りは、フィルター交換の方がお得だと思います。

Q2枚のシートから各シートへの抽出

会計処理する上で下記のような方法が出来るかどうか教えて下さい。

「普通預金」シートと「現金」シートがあり明細を記入していきます。

項目には「日付」「摘要」「収入」「支出」「残高」があります。

そこで項目に「番号」を追加し、下記の通りに置き換えます。

会議費=1

「会議費」シートを作成し、「普通預金」と「現金」シートに記入した分は会議費シートに
追加されていくという方法は可能でしょうか?

わかりづらい説明で大変申し訳ありません。
現在の方法だと、例えば「現金」で「会議費」を支払ったとすると、

「普通預金」と「会議費」

2枚に記入しなくてはならないため間違いも起こりやすくなっています。

「普通預金」か「現金」シートに記入すれば自動的に「会議費」に反映されるようにしたいということです。

一応画像も作成してみたのでご参考になれば幸いです。

よろしくお願いいたします。

Aベストアンサー

こんばんは!
余計なお世話かもしれませんが・・・
一つの案として、もう一つ入力用のSheetを作成し帳簿のような感じでお金(物)の動きがあった場合は
すべて入力していき、それを「現金」・「普通預金」・「会議費」・・・等々のSheetへ振り分けるようにしてみてはどうでしょうか?

↓の画像(画像が小さくて見えにくいかもしれません)で上側のSheetが「入力用」Sheetとしています。
そして、「科目」・「摘要」は入力規則からリスト表示するようにしていますので、数値を入れる「項目」の列は必要なくなると思います。

「科目」別Sheet・または「摘要」別SheetのA1セルにはSheet名をすべて入れておきます。
「科目」の列にあるSheetをグループ化
(画像では「普通預金」Sheetを開き、Shiftキーを押しながら「現金」SheetのSheet見出しをクリックすると二つのSheetがグループ化されます)し

「普通預金」SheetのA3セルに
=IF(COUNTIF(入力用!$B$1:$B$1000,$A$1)<ROW(A1),"",INDEX(入力用!A$1:A$1000,SMALL(IF(入力用!$B$1:$B$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1))))
これは前回同様配列数式になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!
これをE列までオートフィルでコピー!
A3セルの表示形式は「日付」にしておきます。
最後にA3~E3セルを範囲指定しE3セルのフィルハンドルで下へコピーすると画像のような感じになります。

尚、会議費Sheet(摘要の項目Sheet)は「入力用」Sheetでは別列になりますので、
数式が少し変わります。
「会議費」SheetのA3セルに
=IF(COUNTIF(入力用!$C$1:$C$1000,$A$1)<ROW(A1),"",INDEX(入力用!A$1:A$1000,SMALL(IF(入力用!$C$1:$C$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1))))
(これも配列数式です。)として先ほど同様の操作方法で画像のような感じになります。

※ メニュー → ツール → オプション → 「表示」タブで「ゼロ値」のチェックは外しています。

これで「入力用」Sheetに入力するだけで、それぞれのSheetに振り分けられて表示されると思います。

以上、長々と書きましたが
的外れならごめんなさいね。m(__)m

こんばんは!
余計なお世話かもしれませんが・・・
一つの案として、もう一つ入力用のSheetを作成し帳簿のような感じでお金(物)の動きがあった場合は
すべて入力していき、それを「現金」・「普通預金」・「会議費」・・・等々のSheetへ振り分けるようにしてみてはどうでしょうか?

↓の画像(画像が小さくて見えにくいかもしれません)で上側のSheetが「入力用」Sheetとしています。
そして、「科目」・「摘要」は入力規則からリスト表示するようにしていますので、数値を入れる「項目」の列は必要なくなると思...続きを読む

Q空気清浄機のフィルターについてお願いします

ダイキンのACK70N-Wを自宅で使用しています。
二つの事について教えてください
(1)、10年フィルターは何故水洗いしてはいけないのか??
(2)、毎日タバコを空気清浄機の前で仮に10本吸っていたら
   10年フィルターは何年ぐらいもつのでしょうか??
   (家の大きさ・空気清浄機のON時間、他条件によって変わると思いますが)

よろしくお願いします

Aベストアンサー

(1)
ダイキンの空気清浄機上位機種の特徴として、
http://www.daikinaircon.com/ca/merit/cleanair/uruoi/index.html?ID=ca_uruoi_index
吸い込んだホコリなどの粒子をフィルターの手前でプラスに帯電させて(図の1)、
その後に静電フィルターに電気的に吸着させて除去する(図の4)
という方式を取っています。

そのため、フィルターの目の細かさで物理的に漉し取る方式に比べると
フィルターの目を粗くできて風量のロスを少なくすることができます。

この静電フィルターというのは、気流の摩擦によって
静電気を発生させてフィルター表面を帯電させるという物で、
水に濡らしてしまうと、その後乾かしたとしても
静電気を発生させる能力が低下するという欠点があります。
それでダイキンは静電フィルターを含む
フィルターセットの水洗いを禁止しているのです。

(2)
これはダイキンのフィルター寿命試験方法の仕様が分からないので、
メーカーに問い合わせるのが一番だと思います。

QAccess 各レコードの中での最大フィールドを抽出したい

Accessにつぎのようなテーブルがあります(例)。

各人の成績表

フィールド1:名前
フィールド2:1回目の得点
フィールド3:2回目の得点
フィールド4:3回目の得点

名前の重複はありません。
レコードごとに、フィールド2~4の最大値を抽出する方法を教えていただけると、たいへん幸せです。

どうぞ、よろしくお願いします。

Aベストアンサー

モジュールを作成し、その中に関数を作成します。
Function myMax(ParamArray a())
Dim i
myMax = -9999
For i = 0 To UBound(a())
If a(i) > myMax Then myMax = a(i)
Next
End Function

で、クエリに
最高点: myMax([n01],[n02],[n03])
というふうに関数を使えます。SQLでは
SELECT t8.name, t8.n01, t8.n02, t8.n03, myMax([n01],[n02],[n03]) AS 最高点 FROM t8;
となります。
頑張ってくださいヽ(^。^)ノ

Q空気清浄機のフィルター

もう5~6年使っている空気清浄機のフィルターを交換しようと思っているのですが、いろんな店で「カテキンフィルター」を探しているのですが、
なかなか見つかりません。
今使ってる空気清浄機は全然故障もしないのでこのまま使い続けていきたいのですが、フィルターを交換しないと・・・
もし空気清浄機専門でカテキンフィルターを扱っている店を知っていたら教えて下さい。
ちなみにNational(松下電器)のF-P02C2です!。

Aベストアンサー

以下の参考URLサイトは参考になりますでしょうか?
これは「秋葉原の取り扱い店」ですが、これのチェーン店でお近くにはないでしょうか?

さらにベスト電器、ヤマダ電機等にあるかもしれません?
TELで問い合わせてみては如何でしょうか?

ご参考まで。

参考URL:http://www.akiba.or.jp/list/category/02.html

QAccess2000のコマンド検索 値空白時抽出

アクセス初心者です。
初めてデータベースを構築していますが、1つ質問があります。
いくつかの項目をコマンド検索をかけてサブフォームに表示させていますが、その項目に空白があるとデータが抽出されません。。。
具体的には下記の通りです。

以下3つの項目で検索をかけますが、3つの項目すべて値がインプットされていないとヒットしてくれません。
例えば該当する品名で検索をかけても、品名コードが空白だと抽出されません。
空白があっても検索にヒットするような条件式(コード)を教えてください!!

(1)資材メーカー
(2)品名
(3)品名コード

Private Sub 検索Cmd1_Click()

Me!資材メーカー一覧Sub.Form.FilterOn = True
Me!資材メーカー一覧Sub.Form.Filter = "[資材メーカー] Like '*" & Me!資材メーカー検索Txt & "*' And [品名] Like '*" & Me!品名検索Txt & "*' And [品名コード] Like '*" & Me!品名コード検索Txt & "*'"
End Sub

アクセス初心者です。
初めてデータベースを構築していますが、1つ質問があります。
いくつかの項目をコマンド検索をかけてサブフォームに表示させていますが、その項目に空白があるとデータが抽出されません。。。
具体的には下記の通りです。

以下3つの項目で検索をかけますが、3つの項目すべて値がインプットされていないとヒットしてくれません。
例えば該当する品名で検索をかけても、品名コードが空白だと抽出されません。
空白があっても検索にヒットするような条件式(コード)を教えてください!!

...続きを読む

Aベストアンサー

No1です。

"[資材メーカー] Like '*" & Me!資材メーカー検索Txt & "*' And [品名] Like '*" & Me!品名検索Txt & "*' And [品名コード] Like '*" & Me!品名コード検索Txt & "*'"



"Nz([資材メーカー]) Like '*" & Me!資材メーカー検索Txt & "*' And Nz([品名]) Like '*" & Me!品名検索Txt & "*' And Nz([品名コード]) Like '*" & Me!品名コード検索Txt & "*'"

のようにすれば、いずれのフィールドに空白があっても
検索にヒットするような条件になります。


人気Q&Aランキング

おすすめ情報