複数のExcelファイルがあり、そのファイルの中身は複数のシートで構成されています。
また、カラム名はどのファイル/シートも共通になっています。
上記の構成のExcelファイルのデータをファイル名とシート名情報を付加して抽出したいのですが、
ファイル名、シート名がうまく抽出できません。
※クラスメソッドさんのこちらの構成を参考に作成を試みています。
https://dev.classmethod.jp/business/business-analytics/alteryx-inputdata-union-dynamicinput/
→Directoryツールの情報をAppend Fieldツールを使ってくっつけようとしましたがうまくいきませんでした。
なにか良い方法はないでしょうか?
解決済! 解決策の投稿を見る。
Excelの一気読みは難易度が結構高いケースがあります。
ところで、どこで詰まっているのかちょっとわからないのですが、
「シート名のリストのみをインポート」(<List of Sheet Names>)が選択できていますでしょうか?(古いxls形式だと選択できない場合があります)
解決策として以下が提示されておりますのでご参照ください。
ちなみに、Excelは同じフィールド名を持っているように見えて実は空白の列を持っていたりすることがあるのでそのような場合はマクロで読み込む必要がありますのでご注意ください。
(こちらを参照ください:https://newssdx.kcme.jp/alteryxtips-multiple_csv_input/)
なんでもExcelを読み込むようなマクロもあるようです(使ったことはないのでご了承ください)
回答いつもありがとうございます。
>ところで、どこで詰まっているのかちょっとわからないのですが、
>「シート名のリストのみをインポート」(<List of Sheet Names>)が選択できていますでしょうか?(古いxls形式だと選択できない場合があります)
一気読みでデータは抽出できているのですが、ファイル名とシート名を取得して繋げるというところで方法が見出せませんでした。
回答をすべて細かく見ていないのですが、最後のマクロが素晴らしいです。
一気に解決しました!
(ぐずぐずと何時間か悩んでいたので。)
これだけだと悔しいので、ほかの回答方法も理解しつつできるところは自作してみたいと思います。
(最終的にはマクロに頼るかもしれませんが。)
本当にありがとうございました!
取り急ぎ、解決して何よりです。
>ファイル名とシート名を取得して繋げる
とのことなので、以下のような設定が解決策かと思いますが、
いかがでしょうか?
ポイントは、フォーミュラでReplace関数で<List of Sheet Names>を置き換える
ところかと思います。
追加の返信ありがとうございます。
早速試してみたのですが、どうもうまくいきません。
なにか不足しているのでしょうか?
フォーミュラからのパス取得はうまく取れています。
しかし、Dynamic Inputツールの後は普通にExcelデータのみ取得になってしまいます。
上記をAppend Fieldツールで結合してもデータが増えてしまい、
データとして成立しないことに気が付きました。
(SQLのCROSS JOINのような状態)
アウトプットイメージは以下のような感じです。
青色部分がExcelデータ部分、オレンジがExcelファイルのパスとシート名です。
何度もすいません。
お時間に余裕があれば助言いただければ助かります。
Excelの中身に読み込み元のファイルパス、シート名が付加したい、ということでしょうか?
そうなると以下のような感じになるかと思います。
動的入力のデータ入力ソーステンプレートの方で、「ファイル名をフィールドとして出力する」のところを「フルパス」にすれば、フォーミュラからの出力と結合することでほしい結果が得られると思います。
ありがとうございます!
しっかりとパスとシート名が取得できました。
細かいパラメータの動きを把握できていない。と反省しました。
いつも素早く、正確な情報提供ありがとうございます。