ExcelSheet1からSheet2への転記方法について

以下用件のフローを作成したいです。
色々試してみたのですが、なかなかうまくいかず、フローをご教示いただけますと幸いです。

【要件】
Excel⓵Sheet1に以下が記載されています。
※行数は都度異なります。
※Userの数は最大12名で都度異なります。

A1に「グループ表示名1」、B1に「エイリアス1」、C1に「部署名1」、D1に「User1」、E1に「User2」、F1に「User3」
A2に「グループ表示名2」、B2に「エイリアス2」、C2に「部署名2」、D2に「User4」、E2に「User5」
A3に…

Excel⓵Sheet2に以下のように転記したいです。
A1に「グループ表示名1」、B1に「エイリアス1」、C1に「部署名1」、D1に「記載日」、E1に「User1」
A2に「グループ表示名1」、B2に「エイリアス1」、C2に「部署名1」、D2に「記載日」、E1に「User2」
A3に「グループ表示名1」、B3に「エイリアス1」、C3に「部署名1」、D3に「記載日」、E1に「User3」
A4に「グループ表示名2」、B4に「エイリアス2」、C4に「部署名2」、D4に「記載日」、E1に「User4」
A5に「グループ表示名2」、B5に「エイリアス2」、C5に「部署名2」、D5に「記載日」、E1に「User5」

【作成したフロー】
Excelファイルを使用

範囲を読み込み
Excel.Sheet(“Sheet1”)
先頭をヘッダー☑
表示行のみ☑
保存先:dtSource

繰り返し(データテーブルの各行)
繰り返し:CurrentRow
次のコレクション内の各要素:dtSource

条件分岐(IF)
Condition:CurrentRow(“グループ表示名”) IsNot Nothing AndAlso Not String.IsNullOrWhiteSpace(CurrentRow(“グループ表示名”).ToString)

複数代入
グループ表示名=CurrentRow(“グループ表示名”).ToString
グループアドレス=CurrentRow(“グループアドレス”).ToString
部署名=CurrentRow(“部署名”).ToString
targetColumns=New String() {“C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”, ”M", “N”}

繰り返し(コレクションの各要素)
繰り返し:currentItem
次のコレクション内の各要素:targetColumns

条件分岐(IF)
Condition:Not String.IsNullOrWhiteSpace(CurrentRow(currentItem.ToString).ToString)

データ行を追加
ここら辺からよくわからなくなってしまいました。。。。

足りない説明等ありましたらご指摘ください。
よろしくお願いいたします。

1. Read Input Excel

  • Use “Excel Process Scope”
    • Excel File: Your target file
  • Inside, use “Use Excel File”
    • Excel file reference: excelFile
    • Inside, use “Read Range” (Classic or Modern)
      • Sheet: Sheet1
      • Output: dtSource

2. Create Output DataTable

Use an “Assign” activity to create dtOutput:

dtOutput = New DataTable()
dtOutput.Columns.Add(“Group Display Name”, GetType(String))
dtOutput.Columns.Add(“Alias”, GetType(String))
dtOutput.Columns.Add(“Department Name”, GetType(String))
dtOutput.Columns.Add(“Date of Entry”, GetType(String))
dtOutput.Columns.Add(“User”, GetType(String))

3. Iterate Through Source Rows

Use “For Each Row in DataTable”

  • DataTable: dtSource
  • Row: row

Inside loop:

groupName = row(“Group Display Name”).ToString.Trim
alias = row(“Alias”).ToString.Trim
department = row(“Department Name”).ToString.Trim

4. Loop Through User Columns Dynamically

Declare the user columns array:

userColumns = New String() {“User1”, “User2”, “User3”, “User4”, “User5”, “User6”, “User7”, “User8”, “User9”, “User10”, “User11”, “User12”}

Use “For Each” activity

  • TypeArgument: String
  • Values: userColumns
  • Current item: userCol

Inside:

  • If condition:

row.Table.Columns.Contains(userCol) AndAlso Not String.IsNullOrWhiteSpace(row(userCol).ToString)

  • Then: Add to dtOutput

dtOutput.Rows.Add(groupName, alias, department, “Date of Entry”, row(userCol).ToString.Trim)

5. Write to Sheet2

Use “Write Range” activity

  • Sheet: Sheet2
  • DataTable: dtOutput
  • Starting Cell: “A1”
  • Add Headers: :check_box_with_check:

Hope it works

If you found it as solution then mark it as SOLUTION
Happy Automation

1 Like

こんにちは

例えば以下の様になると思います。

サンプル(別ファイルに書き出しています)
Sample20250617-1.zip (10.5 KB)

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.