【Powershell】Excelのセル内で改行された文字群を一つずつのセルに置き直す方法。
Powershellを使ってExcelも使う。
はろー、yukiです。
Excelのセル内で改行して情報を集約する方法。Alt+Enterでできますよね。
便利ではあるんですが、例えばこういうことが起きます。
セルの間で同じ値が発生し、重複している文字列をカウントしたい場合。
この状態で下の関数を使用してもうまくいきません。
=COUNTIF(B2:B4, "a")
ということで、今回のタスクはこちら。
ーーーーーーーーーーーーーーーーーーーーーーーーー
- セル内で改行された文字群から、一行ずつの文字列に成形
- 文字列を一つずつのセルに置き直す
ーーーーーーーーーーーーーーーーーーーーーーーーー
Excelでやろうとすると、[データ]タブの[区切り位置]から、文字ごとに区切ることが可能です。
ですが、張り付けると列(横)に広がってしまうので、行/列の入れ替えで張り付けます。
...ということをすると、できることはできますが、数が多いと大変ですよね。
Windows系のPCであれば、Powershellを使用しましょう。
手順はこちら(太字下線の文字を追えば、すぐにできます)。
Excel上で対象範囲をコピーし、テキストファイルに張り付け、任意の名前で保存し、Powershellで読込み。
それをしたのがこちら。
> cat .\test.txt "a b" "a a a" c
おっと、「"」を消すのを忘れていました。
テキストファイルに戻り、[置き換え]から「"」を全て消してください。
> cat .\test.txt a b a a a c
はい。うまくいきましたね。
あとは簡単です。Powershellで対象部分をコピーし、Excelへ貼り付けます。
上図のようになりましたね。
この状態であれば、COUNTIF文も使用できます。
実は、今回のやり方は、けっこう手抜きです。分かりますよね(笑)。
vbaを使用すれば、今回の例よりもさらに多くのセルに対し、対応できます。
平日ということもありますので、ちょっと勘弁してください。
以上。