[[20180203130011]] 『VBAでの検索システム作成について』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでの検索システム作成について』(初心者)

Excel初心者ですが、よろしくお願いします。

Excelに入力した標本データの検索システムを作りたいと考えています。
取り敢えず、下記サイト(Yahoo知恵袋)
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13138010173
を参考にして、以下の状態までたどり着きました。
ただし、Excelのバージョンは2007で、Accessは持っておりません。

Sheet1(シート名「検索画面」)、Sheet2(シート名「標本一覧」)を用意し、Sheet1が標本の検索画面、Sheet2が標本の一覧表になっています。

まず、Sheet2の標本一覧には、
A2〜A1000に標本名, B2〜B1000に学名, C2〜C1000に産地, D2〜D1000に採取者, E2〜E1000に備考が、それぞれ入力されています。(データ数は、今後も更新され、増えてゆく予定です。)

Sheet1では
A2に標本名, B2に学名, C2に産地, D2に採取者, E2に備考のいずれかを入力してマクロを実行すると、A〜E列の7行目以下に、Sheet2の一覧表の中からキーワードと合致する単語を含む行が表示されるようになりました。

ここで、例えば、「A2に標本名を入力し、且つ、C2に産地を入力したとき」、さらには、「A2に標本名を入力し、且つ、C2に産地を入力し、且つ、D2に採取者を入力したとき」、これらすべての条件を満たす結果のみが表示されるようにしたいのですが、可能でしょうか?

現状では、2つ、3つの条件の中のいずれかを含むものしか表示されず、悩んでおります。

また、VBAを一から勉強したいのですが、おすすめの本などがあれば、紹介して頂けないでしょうか?

宜しくお願いします。

ちなみに、入力したコードは、以下の通りです。

Sub 検索()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim i As Long
Dim j As Long
j = 7
Set sh1 = Worksheets("検索画面")
Set sh2 = Worksheets("標本一覧")
sh1.Range("5:5").ClearContents
sh1.Range("A7:E2000").ClearContents
For i = 2 To sh2.Range("A" & Rows.Count).End(xlUp).Row
With sh1
If .Range("A2") <> "" Then
If sh2.Range("A" & i) Like "*" & .Range("A2") & "*" Then
sh2.Range("A" & i).Resize(, 5).Copy
.Range("A" & j).PasteSpecial Paste:=xlPasteValues
j = j + 1
End If
ElseIf .Range("B2") <> "" Then
If sh2.Range("B" & i) Like "*" & .Range("B2") & "*" Then
sh2.Range("A" & i).Resize(, 5).Copy
.Range("A" & j).PasteSpecial Paste:=xlPasteValues
j = j + 1
End If
ElseIf .Range("C2") <> "" Then
If sh2.Range("C" & i) Like "*" & .Range("C2") & "*" Then
sh2.Range("A" & i).Resize(, 5).Copy
.Range("A" & j).PasteSpecial Paste:=xlPasteValues
j = j + 1
End If
ElseIf .Range("D2") <> "" Then
If sh2.Range("D" & i) Like "*" & .Range("D2") & "*" Then
sh2.Range("A" & i).Resize(, 5).Copy
.Range("A" & j).PasteSpecial Paste:=xlPasteValues
j = j + 1
End If
ElseIf .Range("E2") <> "" Then
If sh2.Range("E" & i) Like "*" & .Range("E2") & "*" Then
sh2.Range("A" & i).Resize(, 5).Copy
.Range("A" & j).PasteSpecial Paste:=xlPasteValues
j = j + 1
End If
Else
MsgBox "標本名、産地等を入力して下さい"
.Range("A2").Select
Exit Sub
End If
.Range("A7").Select
End With
Next i
Application.CutCopyMode = False
If Range("A7") = "" Then
MsgBox "見つかりませんでした"
End If
End Sub

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 こんにちは!
もうパソコンを閉じちゃったので回答は出来ませんけど、
ご質問の内容を察するにフィルターのオプション設定で出来ると思いますよ多分汗
それを記録してみるといいんではないでしょうか?
後、これが本題なんですけど、私のヴァイブルは、
EXCEL97VBA
FOR Windows95
SUPERMASTER
ですよ(笑)
この本を読みましたねぇ
あぁ、懐かしいなぁ
結局、本は何でもいいと思いますよ
とにかくやってみたい事を書くことですね
私なんかここで自分の為にゴードを書いてる様なもんですから(^^;;
頑張ってくださいね
では、では、
(SoulMan) 2018/02/03(土) 14:35

 フィルターのオプション設定をおすすめしておいて
一回ぐらい書いてるのかと思ったら書いてないもんですね(^^;;
いやぁ、検索してみてください
どっさりと出てきますから
http://www.excel.studio-kazu.jp/kw/20050305200025.html

http://www.excel.studio-kazu.jp/kw/20041222093113.html
(SoulMan) 2018/02/03(土) 15:08


ご回答下さりありがとうございます。

ご教授頂いたことを参考にいろいろと試行錯誤してみます(^^
助かりました。
(初心者) 2018/02/03(土) 15:25


>現状では、2つ、3つの条件の中のいずれかを含むものしか表示されず、悩んでおります。

https://www.forguncy.com/blog/20170714_filteroption
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm

フィルターオプションという機能でほぼやりたいことは実現できます。
ただし、見た目がたぶん気に入らないと思います。
が、マクロを使えば、見せたくないものを見せずに、
エクセル君を遠隔操作できます。

まずは手動で出来るようになり、その操作をマクロの記憶をすれば、
最低限の必要なコードは得られます。
作業用のシートに検索条件を書く表を用意し、
入力欄から転記し、それから抽出するようにしたらいいと思います。

>また、VBAを一から勉強したいのですが、おすすめの本などがあれば、紹介して頂けないでしょうか?
https://www.amazon.co.jp/%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Excel-2010-VBA-%E5%9F%BA%E7%A4%8E%E7%B7%A8/dp/4774148695
https://www.google.co.jp/imgres?imgurl=http://t2.gstatic.com/images?q%3Dtbn:ANd9GcTpih84yZTjAk6WGJ18WhoFOFGTiDWYv7XhgvyeaW-Yx_Rk1x4e&imgrefurl=https://books.google.com/books/about/ExcelVBA%25E5%25AE%259F%25E7%2594%25A8%25E3%2582%25B5%25E3%2583%25B3%25E3%2583%2597%25E3%2583%25AB%25E3%2582%25B3%25E3%2583%25AC%25E3%2582%25AF%25E3%2582%25B7.html?id%3DgSNGGQAACAAJ%26source%3Dkp_cover&h=523&w=409&tbnid=kv5Ec2JFE7emfM:&tbnh=160&tbnw=124&usg=__qeefLZVHqUSGr2bcgdZTGKkO9QI%3D&vet=10ahUKEwiV38GkpIzZAhWCI5QKHZPlAScQ_B0IdjAK..i&docid=_B2lqsvdlfEGmM&itg=1&sa=X&ved=0ahUKEwiV38GkpIzZAhWCI5QKHZPlAScQ_B0IdjAK

この辺がお勧めです。最新版が出てると思います。
まぁ、それぞれ合う合わないがあるので、
合わなかったらごめんなさい。
(まっつわん) 2018/02/04(日) 21:43


まっつわん様

ご回答下さりありがとうございます。
(返信が大変遅くなり、申し訳ありませんでした…)

丁寧な解説、恐れ入ります。
まずは、VBAに慣れるまで頑張ってみます。
(初心者) 2018/03/05(月) 16:36


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.