| エクセル | の学校 |
| 8.一覧 | 9.HOME |
| 1.Top | 2.Last |
『担当者の抽出』(コウケイ)
毎月、業者別に担当者を抽出して別シートに張り付けているのですが、効率が悪くsheet1のデータをsheet2に抽出して貼り付けることができないでしょうか、よろしくお願いいたします。 sheet1 ⇒ sheet2
A B A B 業者名 担当者名 業者名 担当者名 業者a 担当?@ 業者a 担当?@ 業者a 担当?A 担当?A 業者b 担当1 担当?B 業者c 担当A 業者b 担当1 業者b 担当2 担当2 業者a 担当?A 業者c 担当A 業者c 担当B 担当B 業者a 担当?B 担当C
sheet1の業者名は毎月変わりませんが、担当者が、毎月変わり人数も変動し最大10名ほどになります。 sheet2の業者名は固定されており業者間に10行の間隔を開けてありますので、マクロを実行してセルB3より下にsheet1のB列より各業者の担当者を抽出して自動で貼り付けることができないでしょうか、よろしくご教授お願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows11 >
Dim wsSrc As Worksheet '元データ:sheet1
Dim wsDst As Worksheet '出力先:sheet2
Dim lastRowSrc As Long
Dim lastRowDst As Long
Dim r As Long
Dim vendor As String
Dim pasteRow As Long
Dim findRow As Long
Set wsSrc = ThisWorkbook.Worksheets("Sheet1") '←元データシート名
Set wsDst = ThisWorkbook.Worksheets("Sheet2") '←出力シート名
' 元データの最終行(A列基準)
lastRowSrc = wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row
' 出力先の担当者リストをクリア(B3以降)
lastRowDst = wsDst.Cells(wsDst.Rows.Count, "B").End(xlUp).Row
If lastRowDst >= 3 Then
wsDst.Range("B3:B" & lastRowDst).ClearContents
End If
' sheet2 の A列にある各業者名ごとに担当者を抽出
r = 2 '業者名の一覧が A2 から下に並んでいる前提(必要なら変更)
Do While wsDst.Cells(r, "A").Value <> ""
vendor = wsDst.Cells(r, "A").Value
pasteRow = 3 '各業者の貼り付け開始行(B3)にリセット
' 同じ業者名が sheet2 に複数行ある場合は、その一番下に貼るようにしたいなら、
' ここで pasteRow を調整する:
Do While wsDst.Cells(pasteRow, "A").Value = vendor
pasteRow = pasteRow + 1
Loop
' sheet1 から該当業者を抽出
For findRow = 2 To lastRowSrc '1行目は見出し想定
If wsSrc.Cells(findRow, "A").Value = vendor Then
wsDst.Cells(pasteRow, "A").Value = vendor
wsDst.Cells(pasteRow, "B").Value = wsSrc.Cells(findRow, "B").Value
pasteRow = pasteRow + 1
End If
Next findRow
r = r + 1
Loop
MsgBox "抽出が完了しました。"
End Sub
(稚拙) 2026/03/05(木) 11:47:40
マクロが希望とのことですが、関数で抽出する案です。(無用でしたら無視してください。)
Sheet2 A3、A13、A23に業者名があるものとして
B3: =IFERROR(INDEX(Sheet1!B:B,AGGREGATE(15,6,ROW(Sheet1!$A:$A)/(Sheet1!$A:$A=$A$3),ROW(A1))),"") B12までフィル ^^^^
B13: =IFERROR(INDEX(Sheet1!B:B,AGGREGATE(15,6,ROW(Sheet1!$A:$A)/(Sheet1!$A:$A=$A$13),ROW(A1))),"") B22までフィル ^^^^
---線部分のROW(A1)は、条件に合う担当者を上から順に抽出するためのものですので、B4ではA2、B5ではA3、 になります。業者名が変わるB13にはなた、A1を入力してください。
(jjj) 2026/03/05(木) 12:07:20
B13にはなた、 → B13にはまた、 (jjj) 2026/03/05(木) 12:15:15
]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.