Power AutomateのExcel Online (Business) コネクタで「表内に存在する行を一覧表示」や「表に行を追加」を使おうとして、テーブルの選択欄に何も出てこず先へ進めない、ということがあります。このコネクタの行の操作は、Excelの「テーブル」(Ctrl+Tで作る表)を単位にしています。そのため、シートにデータが入力されているだけでテーブルになっていないファイルは扱えません。
このような場合は、フローの中で「テーブルの作成」アクションを使って範囲をテーブルにし、そのあとで行を読み書きします。
アクションの表示名は、表示言語やサービスの更新によって変わることがあります。この記事では次の名前を使います。
| この記事での表記 | 英語表示での名前 |
|---|---|
| テーブルの作成 | Create table |
| テーブルの取得 | Get tables |
| 表内に存在する行を一覧表示 | List rows present in a table |
| 表に行を追加 | Add a row into a table |
先に決めておくこと
| 決めること | 例 | 注意 |
|---|---|---|
| 対象ファイル | /レポート/日次.xlsx | xlsx形式で保存したファイルを使う。CSVはこのコネクタでは扱えない |
| シート名 | Sheet1 | 範囲の指定に使う |
| テーブル範囲 | Sheet1!A1:D1 | A1形式で書く。1行目が見出しになる |
| テーブル名 | tblDaily | 空白は使えない。英字で始めると扱いやすい |
| 列名 | 日付、取引先、金額、担当 | シートに見出しがない場合に指定する |
テーブル名には空白を入れられません。また、A1やR1C1のようにセル番地と同じ形の名前や、ブック内ですでに使っている名前も使えません。
手順1:テスト用のファイルで流れを作る
テーブルの作成は、ファイルの中身を書き換える操作です。本番のファイルではなく、コピーしたファイルで最後まで流れを作り、結果を確かめてから本番のファイルに切り替えます。
ほかの人がファイルを開いて編集していると、ロックがかかって失敗することがあります。テストのときも、対象のファイルは閉じておいてください。
手順2:テーブルがすでにあるか確かめる
テーブルどうしは同じ範囲に重ねて作れないため、同じ範囲に2回作成しようとすると失敗します。毎回実行するフローでは、作成する前に既存のテーブルを調べて、なければ作る形にします。
- 「テーブルの取得」を追加し、場所・ドキュメント ライブラリ・ファイルを指定する
- 「アレイのフィルター処理」(Filter array)を追加し、元のデータに「テーブルの取得」の出力の一覧(value)を指定する。条件には、テーブル名の項目が tblDaily と等しいことを指定する
- 「条件」を追加し、フィルター結果の件数が0と等しいかを判定する。「はい」の側に「テーブルの作成」を置く
条件の式は、たとえば length(body('アレイのフィルター処理')) のように書きます。式の中のアクション名は、フローに付けたアクション名と一致している必要があります。動的なコンテンツから選ぶと正しい名前が自動で入ります。「テーブルの取得」の出力にどの項目名が含まれるかは、一度実行して実行履歴の出力で確かめてください。
手順3:「テーブルの作成」を設定する
| 項目 | 入力例 | 説明 |
|---|---|---|
| 場所 | OneDrive for Business | SharePointのファイルなら、そのサイトを選ぶ |
| ドキュメント ライブラリ | OneDrive | SharePointならドキュメント ライブラリ名 |
| ファイル | /レポート/日次.xlsx | トリガーで受け取ったファイルなら、動的なコンテンツのファイルIDを指定する |
| テーブル範囲 | Sheet1!A1:D1 | シート名+範囲のA1形式 |
| テーブル名 | tblDaily | 後のアクションで指定するので、必ず名前を付ける |
| 列名 | 日付;取引先;金額;担当 | 区切り文字は、入力欄の説明で確認する |
列名は次のように扱います。
- 範囲の1行目にすでに見出しがある場合は、列名を空欄にしてシートの見出しをそのまま使うほうが分かりやすいです。
- 見出しがある範囲に列名を指定した場合、元の1行目がどう扱われるか(上書きされるのか、残るのか)は、テスト用のファイルで実行してから開いて確かめてください。
テーブル名を空欄にすると自動で名前が付きます。後のアクションで指定しにくくなるので、名前は付けておくことをおすすめします。
手順4:テーブル範囲の決め方
テーブル範囲は自動では広がりません。指定した範囲がそのままテーブルになります。状況に合わせて、次のように決めます。
| 状況 | 範囲の指定 | 注意 |
|---|---|---|
| 見出しだけのシートに、これから行を追加していく | Sheet1!A1:D1 | 最も単純な方法。行は「表に行を追加」で増やす |
| データの件数が前のアクションから分かる | concat('Sheet1!A1:D', add(件数, 1)) | 見出しの1行分を足す。件数は、たとえば配列なら length() で求める |
| 件数が分からない既存のデータ | 余裕を持たせた大きめの範囲を固定で指定する | 空の行もテーブルに含まれるので、読み取ったあとで空の行を除く |
行数が毎回変わるデータを、ちょうどの範囲で自動的にテーブルにしたい場合、このアクションだけでは範囲を判定できません。Office Scriptsなど別の仕組みを組み合わせる必要があります。
シート名に空白や記号が入っていると、範囲の指定で失敗することがあります。シート名を変えられるなら、英数字だけの名前に変えておくのが確実です。
手順5:作成したテーブルの行を読む・追加する
行の一覧を取得する
「表内に存在する行を一覧表示」を追加し、ファイルには手順3と同じものを指定します。テーブルのドロップダウンには、フローを編集している時点で存在するテーブルしか表示されません。そのため「カスタム値の入力」を選んで tblDaily と入力します(「テーブルの作成」の出力を動的なコンテンツから指定する方法もあります)。
日付が数値(シリアル値)で返ってくる場合は、アクションの詳細パラメーターに日時の形式の設定があるか確認してください。
行を追加する
「表に行を追加」でもテーブルをカスタム値で指定します。この場合、列ごとの入力欄が表示されず、「行」の欄にJSONで値を渡す形になることがあります。
{
"日付": "2026-10-06",
"取引先": "サンプル商事",
"金額": 12000,
"担当": "担当A"
}
キーの名前は、テーブルの見出しと完全に同じにします。全角・半角や空白が1文字でも違うと、その列には値が入りません。
うまく動かないときの確認
| 症状 | 確認すること |
|---|---|
| テーブルの作成で失敗する | 範囲にすでにテーブルがないか、範囲の書き方とシート名が合っているか、ファイルが編集中になっていないか |
| テーブル名でエラーになる | 空白や記号を含んでいないか、セル番地と同じ形になっていないか、既存の名前と重なっていないか |
| 一覧表示でテーブルが見つからない | テーブル名の綴りが合っているか、別のファイルを指定していないか、実行履歴で作成のアクションが成功しているか |
| 取得した行に空の行が多い | テーブル範囲を必要以上に広く取っていないか |
| 列が足りない・見出しが意図と違う | 範囲の列の幅、列名の指定、元の1行目の内容 |
最後に結果を確かめる
- フローの実行履歴で、各アクションの入力と出力を開き、テーブル名・範囲・取得した行数を見る
- Excelでファイルを開き、「テーブル デザイン」タブでテーブル名を確認する。「テーブルのサイズ変更」で範囲も確認できる
- 追加した行が、意図した列に入っているかを見る
一度テーブルにしておけば、2回目以降は既存のテーブルを使って行を読み書きできます。範囲と名前を決めてからフローを組むと、「テーブルが選べない」というつまずきを避けられます。
