[FileMaker][テキスト変換] 行と列を入れ替えるカスタム関数

CSV ファイルの行と列を入れ替える(transpose)オンラインツールを見つけた。

Online Transpose CSV Tool
https://www.convertcsv.com/transpose-csv.htm

このツールは便利だけど、大量の CSV ファイルをいちいちコピペして作業するのは大変だ。

そこで同じことを FileMaker でする方法をみつけた。行と列を入れ替えるカスタム関数が公開されているのだ。

(1)まず GetColumn というカスタム関数が同時に必要なので登録しておく。

カスタム関数は、FileMaker で「File > Manage > Custom Functions」から登録する。

以下のページからカスタム関数をコピーして使わせてもらう。そして Parameters に text、columnNumber、columnDelimiter を設定する。

FileMaker Custom Function: GetColumn ( text ; columnNumber ; columnDelimiter )
https://www.briandunning.com/cf/877

(2)同様の方法で、メインのカスタム関数である TransposeArray を登録する。コードは以下のページからコピーして使う。

FileMaker Custom Function: TransposeArray ( array ; columnDelimiter )
https://www.briandunning.com/cf/878

これでカスタム関数が使える状態になった(実は私はカスタム関数を使うのがこれが初めてだ)。

例えば以下のような | で区切られた表があるとする。

1|2|3
a|b|c
x|y|z

これを以下のように変換したい。

1|a|x
2|b|y
3|c|z

TransposeArray 関数は TransposeArray ( “入力”, “区切り記号” ) のように使う。すなわち、今回は TransposeArray ( “1|2|3¶a|b|c¶x|y|z” ; “|” ) という関数を使えよい。

CSV ファイルの場合は区切りがコンマだったりするがこれも “|” の部分を “,” に置き換えればいい。

入力内容、区切り記号、出力内容のフィールドを作ると、大量に作業するのも簡単だろう。

入力内容フィールド:
1|2|3
a|b|c
x|y|z

区切り記号フィールド:
|

これで Set Field [ table::出力内容フィールド ; TransposeArray { table::入力内容フィールド ; table::区切り記号フィールド ) ] というスクリプトステップを組めば以下のように出力される。

出力内容フィールド:
1|a|x
2|b|y
3|c|z