天使と悪魔選手権

以前、下記のような質問をさせて頂きました。

https://oshiete.goo.ne.jp/qa/10408081.html

社宅に住んでいる「山田」さん等を見つける場合のことです。
その後、じゃあ別のエリアの管理も頼むよということで、管理する社宅が増えてしまいました。

そこで社宅名などが見やすいようにデータシートは
A列は、社宅名
B列に、一人目の住人名
C列に、二人目の住民名



というように前回とは縦横逆にすることにしましたが、
前回教えて頂いたマクロでは縦横が逆になっていることからうまく使用できません。
また、私自身もマクロが良くわからないので修正することもできていたない状況です。

前回と同じことをしたいのです。
マクロを教えて下さい。

「社宅に住んでいる「山田」さん等を見つける」の質問画像

A 回答 (2件)

こんにちは!



今回も元データはSheet1にあり、Sheet2に表示するとします。
Sheet2のシートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, j As Long
Dim lastRow As Long, cnt As Long
If Target.Address = "$A$1" Then
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 2 Then
Range(Cells(3, "A"), Cells(lastRow, "B")).ClearContents
End If
If Target <> "" Then
With Worksheets("Sheet1")
cnt = 2
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
For j = 2 To .Cells(i, Columns.Count).End(xlToLeft).Column
If InStr(.Cells(i, j), Target) > 0 Then
cnt = cnt + 1
Cells(cnt, "A") = .Cells(i, "A")
Cells(cnt, "B") = .Cells(i, j)
End If
Next j
Next i
End With
End If
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
できました。
とても素晴らしいです。

お礼日時:2018/05/01 22:19

マクロは不要です。



「*山田*」
で検索・絞り込みしたら見つけられるようにすればいいだけ。
それで目的は達成できる。

「*」はワイルドカードと言って、どんな値であっても対象とするという意味で使われます。
結果、「山田太郎」も「小山田先生」も「山田野さん」も絞り込まれて表示されます。

じゃあ、どうすればそんな感じにできるのか。

A列に「社宅名」
B列に一人分の「名前」
のように表を書き換える。
書き換える事ができたらB列に「フィルタ」を掛けて「*山田*」で絞り込みを行えばいい。


・・・
さすがにこれを理解できない事は無いと思うんですけど、いかがでしょう。
(前回の回答よりも詳しく書いてみました)

元のデータを書き換えるので、必ず複製(コピー)したファイルに対して作業を行うようにしましょう。
(オリジナルは残す)


・・・余談・・・

理解できない回答をもらって目の前にある課題をやり遂げても、
それは疑問や問題を先送りにしたにすぎません。
また次に同じ人が力を貸してくれるとは限りませんからね。

手間かもしれませんが、自分の力量にあった手段で対処するようにしましょう。

もしも、ここを「代わりにやってくれる」ところと勘違いされているようでしたら、
二度と利用しないことを強く勧めます。
ここは「疑問を解決する」サイトです。
    • good
    • 2
この回答へのお礼

もしも回答するのが面倒な場合は回答されないことを強くおすすめします。ここは質問したい方が質問し回答したい方が回答するサイトです。

お礼日時:2018/04/27 07:12

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