Excel VBAで別ブック検索結果を列に順次格納するマクロ
このExcel VBAマクロは、ブック1の指定シートから検索文字列を読み取り、ブック2内を検索して結果を元のシートのB列以降に複数ヒット分を順に格納します。検索結果がない場合は「見つからない」と記入します。
Sub SearchAcrossAllSheetsAndCopyContents()
Dim wbSource As Workbook, wbTarget As Workbook
Dim wsSource As Worksheet, wsTarget As Worksheet
Dim lastRow As Long, i As Long, col As Long, s As Integer
Dim searchString As String, found As Range, firstAddress As String
' ソースブックとターゲットブックの設定
Set wbSource = Workbooks("ブック1.xlsm") ' ソースブック名を適宜変更してください
Set wbTarget = Workbooks("ブック2.xlsx") ' ターゲットブック名を適宜変更してください
' ソースシートの設定
Set wsSource = wbSource.Sheets("シートX") ' シート名を適宜変更してください
' ソースシートのA列で最後の行を探す
lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' A列の各行でループ
For i = 1 To lastRow
searchString = wsSource.Cells(i, 1).Value ' 検索文字列
col = 2 ' 結果を格納する列をB列から開始
' ターゲットブックの全てのシートでループ
For Each wsTarget In wbTarget.Sheets
With wsTarget.Cells
' ターゲットシート内で初めて見つかったセルを探す
Set found = .Find(What:=searchString, After:=.Cells(.Cells.Count), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not found Is Nothing Then
firstAddress = found.Address
Do
wsSource.Cells(i, col).Value = found.Value ' 見つかったセルの内容を記入
col = col + 1 ' 次の結果を格納する列を一つ右に移動
Set found = .FindNext(found)
Loop While Not found Is Nothing And found.Address <> firstAddress
End If
End With
Next wsTarget
' 一つも結果が見つからなかった場合
If col = 2 Then wsSource.Cells(i, col).Value = "見つからない"
Next i
End Sub
紅白歌手の出場時年齢をグラフにしてみた
紅白歌合戦に毎回出ている石川さゆり、一体何年前から、何歳のときから出場しているか知っていますか?
昨年末、テレビの前でこの素朴な疑問が生まれてしまい、年1の津軽海峡に身が入りませんでした。もったいない。
調べた成果が下の画像です。
石川さゆりは47年前の1977年、19歳のときから1回を除いて毎回出場しています。2023年末時点では65歳です。19歳から65歳って人生のほとんどじゃねえか。スゴすぎる。
(妊娠中のため唯一欠場した1983年も、「特別応援ゲスト」としてステージに登場しているそうです。)
こうなると、他のアーティストも気になってきました。
次の画像では、石川さゆりだけでなく、紅白に20回以上出場した歌手の出場時年齢をグラフにしています。2000年生まれの筆者にも分かりやすいよう、各年の主な出来事も載せておきました。
見づらいですが、拡大して見てください。
昨年末出場した歌手の中では、郷ひろみも長い出場歴を持っています。1973年(円が変動為替相場制に移行し、第4次中東戦争を機に石油危機が発生した年)から出場しています。ただし、石川さゆりほどコンスタントには出ていません。
少し遡ると、北島三郎は、1963年(東京五輪の前年、ケネディ暗殺の年)から出ていたようです。もはや歴史上の人物でしょ。
他にも発見があると思います。画像はXにも投稿していますので、皆さんでご笑覧ください。
紅白歌合戦に20回以上出場した歌手の出場時年齢の推移#NHK紅白 pic.twitter.com/fssuY2vtVx
— 井ノ部 悠 (@InobeYu) 2024年1月8日