エクセルで、作った表の中の文字を検索して表示できるようなものを作ろうとしています。
「10月1日」
「第3病棟」
の様な診療日と病棟の両方が当てはまる項目を検索できるものを作成しようとして、いろいろ教えていただきました。
しかし、私のやり方がおかしいのか検索をしてもうまくいきません。
作った表にはB列に「診療日」、D列に「病棟」が全部で100近く入っています。
下記のものだと、検索し、当てはまるものが1つしか表示されません。
本当は当てはまる項目は複数あるのですが、それらがうまく表示されないのです。
わかる方がいらっしゃりましたら、教えてください。
Private Sub CommandButton1_Click()
'マクロ実行画面の凍結
Application.ScreenUpdating = False
'変数宣言
Dim 診療日 As Variant
Dim 病棟 As Variant
'抽出キーの入力指示
診療日 = InputBox("診療日をいれてください", "診療日入力")
'キャンセルした場合の処理
If 診療日 = Empty Then Exit Sub
病棟 = InputBox("病棟をいれてください", "病棟入力")
'キャンセルした場合の処理
If 病棟 = Empty Then Exit Sub
'オートフィルタがかかっていたら解除
If ActiveSheet.AutoFilterMode Then Selection.AutoFilter
'フィルタ設定
Range("B5:E5").AutoFilter
Range("B3").Select
'診療日と病棟の2項目にフィルタ条件設定
Selection.AutoFilter Field:=1, _
Criteria1:="=*" & 診療日 & "*", Operator:=xlAnd
Selection.AutoFilter Field:=3, _
Criteria1:="=*" & 病棟 & "*", Operator:=xlAnd
End Sub
No.1ベストアンサー
- 回答日時:
テストの関係上、A,B列でフィルタする例に変えましたが
Private Sub CommandButton1_Click()
'マクロ実行画面の凍結
Application.ScreenUpdating = False
'変数宣言
Dim 診療日 As Variant
Dim 病棟 As Variant
'抽出キーの入力指示
診療日 = InputBox("診療日をいれてください", "診療日入力")
'キャンセルした場合の処理
If 診療日 = Empty Then Exit Sub
病棟 = InputBox("病棟をいれてください", "病棟入力")
'キャンセルした場合の処理
If 病棟 = Empty Then Exit Sub
'オートフィルタがかかっていたら解除
If ActiveSheet.AutoFilterMode Then Selection.AutoFilter
'------
'フィルタ設定
Range("A1:B11").Select
Selection.AutoFilter
'診療日と病棟の2項目にフィルタ条件設定
Selection.AutoFilter Field:=1, Criteria1:="=*" & 診療日 & "*"
Selection.AutoFilter Field:=2, Criteria1:="=*" & 病棟 & "*"
End Sub
はどうですか。
No.2
- 回答日時:
こんにちは。
とりあえず、そのままのスタイルを生かして、作り変えました。
できるなら、ExcelのVersionを出しておいたほうがよいと思います。これは、Versionによっても、微妙に違っていたような気がします。
Private Sub CommandButton1_Click()
Dim 診療日 As Variant
Dim 病棟 As String
Dim flg As Boolean
flg = False
With ActiveSheet
'すべてを出す。
If .FilterMode Then .ShowAllData
Do
診療日 = InputBox("診療日をいれてください", "診療日入力")
If 診療日 = Empty Then Exit Sub
If Not IsDate(診療日) Then
MsgBox "日付ではありません。"
Else
診療日 = DateValue(診療日)
If Year(診療日) < 2000 Then
MsgBox "日付が違うようです。"
Else
flg = True
End If
End If
Loop Until IsDate(診療日) And flg = True
'B6の書式に従って診療日の書式を変更させる。
診療日 = Format(診療日, .Range("B5").Offset(1).NumberFormatLocal)
病棟 = InputBox("病棟をいれてください", "病棟入力")
If 病棟 = "" Then Exit Sub
Application.ScreenUpdating = False
'フィルタ設定
With .Range("B5").CurrentRegion
.AutoFilter _
Field:=1, Criteria1:="=" & CStr(診療日), Operator:=xlAnd
.AutoFilter _
Field:=3, Criteria1:="=" & 病棟 & "*", Operator:=xlAnd
End With
Application.ScreenUpdating = True
End With
End Sub
懸案としては、
「第3病棟」 ←3だけで検索できるかどうか、という
こと。
つまり、データの文字列が全角なら全
角、半角なら半角の3を探すようにさ
せ、Criterial1:="第"&病棟 &"*" に
したほうがよいかもしれません。
なお、ご質問のコードは、No.1684363で、hana-hana3さんのもののようです。回答者どうしのコードに手を入れるのは、掲示板の回答の暗黙のルールに触れますから、もし、hana-hana3さんが読まれて気分を害していたら、私はお詫びいたします。
この Autofilterは、Versionによって違いがあるのか、バグっぽい動きがあるので、特にに日付式の検索検索などは、念入りに手を加えないと、うまくできません。VBAを良く知っている者でも、むつかしいもののひとつです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SHELL分析について
-
私は上司に嫌われているのでし...
-
20代中盤以降の人から見て19歳...
-
女性看護師が患者の性処理してた
-
看護師さんに質問です。私は入...
-
女性の看護師さんに質問です。 ...
-
看護師って精神的に弱くても慣...
-
知らない人からインスタの フォ...
-
看護師さんって、性格悪い人多...
-
医者・看護師の異性関係の実態...
-
よく看護師は男性の性器を見飽...
-
教師と看護師はどちらが稼げる...
-
抑制、ミトンをせずにチューブ...
-
看護師免許証が届きません。。
-
入院中、パジャマを着てますか?
-
一般的にみて、銀行員は給料高...
-
病院での診察や検査で異性の医...
-
看護師っぽい人の 顔・雰囲気・...
-
東大や京大に看護学科?がある...
-
21歳で既に転落人生です。 看護...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SHELL分析について
-
モスキートとペアンの違いを教...
-
ICUから一般病棟に移されるとい...
-
私は上司に嫌われているのでし...
-
以前入院した時にお世話になっ...
-
精神科病棟勤務、老人保健施設...
-
看護師の申し送りについて
-
看護師就職・病棟勤務と外来勤務
-
特例許可老人病院について
-
精神病院と一般病院の勤務
-
採血に自信がありません
-
手術室看護師の方お願いします。
-
働き方改革として公共交通機関...
-
部署の人員が多すぎる! 病院関...
-
コロナ発生で休み希望が日勤に...
-
小児の採血の器具について
-
手術室勤務になじめなく異動願...
-
療養病棟勤務8年目の48歳看護...
-
来月、退職します。 病院の介護...
-
ホワイトデーのお返しについて
おすすめ情報