|
▼Regina さん:
おはようございます。
>>>Sub TEST()
>>> With Worksheets("データベース")
>>> .Range("A1").AutoFilter Field:=6, Criteria1:="外来"
>>> With .AutoFilter.Range
>>> .Columns(2).Offset(1).Resize(.Rows.Count - 1) _
>>> .SpecialCells(xlCellTypeVisible).Copy _
>>> Worksheets("抽出外来").Range("A1")
>>> End With
>>> .AutoFilterMode = False
>>> End With
>>>End Sub
>>
>上記のコードでは、入院・外来全ての患者さんの名前が抽出されました。
これは、おかしいですね?
入院・外来は、「データベース」のF列に入力されているんでしょう?
>>>
>>>Sub TEST2()
>>> Worksheets("抽出外来").Cells.ClearContents
>>> With Worksheets("データベース")
>>> .AutoFilterMode = False
>>> .Range("A1").AutoFilter Field:=6, Criteria1:="外来"
>>> With .AutoFilter.Range ' 此処にブレークポイントでフィルターの
>>> ' 結果を見てください。
ここで、「外来」だけが抽出されてますか?
>>> .SpecialCells(xlCellTypeVisible).Copy _
>>> Worksheets("抽出外来").Range("A1")
>>> End With
>>> .AutoFilterMode = False
>>> End With
>>>End Sub
>この上のコードでは、名前だけでなく、他のデータ(年齢とか)も全てコピーされていました。
>
これは、そのようになるコードですが、F列が"外来"だけのもののはずですが、
すべてですか?"外来"だけですか?
>データベースは、Fの列が入院・外来のセルになっているので「Field:=6」で合っていると思います。このデータベースはユーザーフォームによって入力・削除できるようにしているので、それに原因があるのでしょうか?入院・外来の部分はユーザーフォーム上のオプションボタンで選択して"入院""外来"が入力されるように設定しています。
どのような入力方法かはともかく、「データベース」のF列に「入院・外来」が、
入力されているかどうかですが・・・
|
|