配列をQiita表に変換

Excelシートの選択範囲をVBAHaskellの関数を使ってQiitaの表形式に変換。
右の形式でクリップボードに転送して、ブラウザに直接貼り付けられるようにします。

f:id:mmYYmmdd:20170415111317p:plain

頻繁にやるなら関数化してもいいけど、とりあえずイミディエイトウィンドウだけで。

m = sheet2m(Selection)              ' 1.ワークシートから配列へ
m = subM(m, catV(0, a_rows(m)))     ' 2.先頭行を重複させる
Call fillRow(m, 1, "--:")           ' 3.2行目の要素はすべて "--:" に変更
m = mapF(p_str_cat("|"), m)         ' 4.各要素の頭に "|" を付ける
m = foldl1(p_str_cat, m, 2)         ' 5.各行を横に結合
m = mapF(p_str_cat(, "|"), m)       ' 6.最後に "|" を付ける
m2Clip transpose(m)                 ' 7.縦にしたものをクリップボード転送

各段階での配列の形の推移はこんな感じ。

f:id:mmYYmmdd:20170415114440p:plain

行数は減らしましょう。

m = sheet2m(Selection)
m2Clip transpose(mapF(p_str_cat(, "|"), foldl1(p_str_cat, mapF(p_str_cat("|"), fillRow_move(subM(m, catV(0, a_rows(m))), 1, "--:")), 2)))