質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

Q&A

1回答

3115閲覧

Active Directoryから書き出したグループ一覧とユーザー一覧からグループに所属しているユーザー一覧が作りたい

takllin

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

0グッド

0クリップ

投稿2021/01/14 11:43

csvdeコマンドでCSVに書き出したグループ一覧とユーザー一覧から、各グループに所属しているユーザーの一覧をつくりたいのですが、ユーザー、グループとも数百あるため手作業でやるのはきついです。

エクセルが苦手なのでご教授お願いいたします。

関数、マクロ等、やり方は問いません。

■参考にしたcsvdeコマンドの解説ページ
https://saku-jp.hatenablog.com/entry/2017/01/11/205945

<グループ一覧>
|グループ名|
|:--|:--:|
|グループ1|
|グループ2|
|グループ3|

<ユーザ一覧>

ユーザ名グループ1グループ2グループ・・・
Aさんグループ1グループ3・・・
Bさんグループ1グループ2・・・
Cさんグループ2グループ3・・・

<作りたい表>
|グループ名|ユーザ1|ユーザ2|ユーザ・・・|
|:--|:--:|--:|
|グループ1|Aさん|Bさん|・・・|
|グループ2|Bさん|Cさん|・・・|
|グループ3|Aさん|Cさん|・・・|

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

マクロを用いた例を書いてみました。
流れはざっと以下の通りです。やってみて分からなければ聞いてください。

① CSVに書き出したグループ一覧とユーザー一覧をExcelで開く
② 新規Excelファイルを作る
③ ①のシートを②にコピーする
④ ①のシートを閉じる
⑤ VBAの画面で以下のコードを入力
⑥ マクロを実行

VBA

1Sub sample() 2 Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet 3 Set ws1 = Sheets("ユーザー一覧") 4 Set ws2 = Sheets("グループ一覧") 5 Set ws3 = Sheets("Sheet1") 6 7 Dim userlist As Range 8 Set userlist = ws1.UsedRange 9 10 Dim grouplist As Range 11 Set grouplist = ws2.UsedRange 12 13 Dim kekkalist As Range 14 grouplist.Copy ws3.Cells.Resize(1, 1) 15 Set kekkalist = ws3.UsedRange 16 17 Dim i, j, c 18 For i = 2 To kekkalist.Rows.Count 19 c = 1 20 For j = 2 To userlist.Rows.Count 21 If IsMatch(kekkalist(i, 1), userlist.Rows(j)) Then 22 kekkalist(i, 1).Offset(, c).Value = userlist(j, 1).Value 23 c = c + 1 24 End If 25 Next 26 Next 27End Sub 28Function IsMatch(s As Range, r As Range) As Boolean 29 On Error Resume Next 30 IsMatch = (WorksheetFunction.Match(s, r, False) > 0) 31End Function 32

投稿2021/02/07 07:56

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問