Excelシート上のデータをノンプログラミングで手軽に変換する方法

Microsoft Excelは、いわずと知れたネ申ツールで、本来の表計算だけでなくワープロからゲーム作成までいろいろな目的に使われています。データ加工も可能で、方法も様々なものが用意されていて玄人心をくすぐられます。


ここで触れている「データ加工」とは、スプレッドシート上で文字列や数値などの値を入力したり加工していくことを指します。主なものだけでも[オートフィル](https://www.becoolusers.com/excel/autofill.html)、[フラッシュフィル](https://dekiru.net/article/15871/)、[関数](https://dekiru.net/article/4429/)、[マクロ・VBA](https://www.sejuku.net/blog/73163)の利用、などいろいろな選択肢があります。関数も含めたプログラミング的な機能を使うと高度なことがいろいろと自動化できますが、今回は、テキストとクリップボードを駆使したノンプログラミング的な手法で意外とできることをご紹介しようと思います！


**利用ツール**

* Excel
* [テキストファイルウィザード](https://support.office.com/ja-jp/article/c5b02af6-fda1-4440-899f-f78bafe41857?ui=ja-JP&rs=ja-JP&ad=JP)
* クリップボード
* メモ帳 (お気に入りのテキストエディタでも可)

# Excelデータをメモ帳にコピペして貼り付けなおしテキストファイルウィザードでデータ加工する技
Excel上のデータをいったんメモ帳などのテキストエディタに貼り付けると、貼り付けのオプションから「テキストファイルウィザード」を起動できます。

ちなみに、Excel上のデータを`Ctrl`+`C`でクリップボードにコピーすると、下の図の下段のようにExcelアイコンで表示され、Excel形式 (もしくはHTML形式)でクリップボードにデータがあることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/f204b285-2b78-a4da-4382-d321662c58d5.png)

一旦、Excel上のデータをテキストエディタにコピーしてそのデータを再びクリップボードにコピーすると、今度は図の上段のようにテキストアイコンで表示されます。この時はテキストとしてクリップボード上にデータが存在します。

### 操作方法の概要
Excel上のデータを`Ctrl`+`C`でクリップボードにコピー、それをテキストエディターに貼り付け、そのデータをテキストエディタ上で`Ctrl`+`C`でクリップボードにコピーして、それをExcelに貼り付けると、以下の通りはりつけのオプションから「テキストファイルウィザードを使用...」メニューが利用できます。(※ Excelのセルをコピーしたときに出る点線の選択範囲はいったん`ESC`キーを押すなどして解除しておいてください。そうしないとExcel上の選択範囲からの貼り付けになってしまう場合があります)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/bff0bdfb-8ece-23e6-098e-2057a548d5dd.png)

ウィザードを起動すると、1ページ目は区切り文字を選択するか、固定長データなのかを選択する画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/7b7d9fa4-9483-5e51-aaab-3c27086aee64.png)

2ページ目はどちらのオプションを選択したかによって異なります。区切り方を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/89bf2f0a-25bc-e24a-d417-95833fc8ab49.png)

3ページ目はデータ形式を選択する画面です。この後「完了」ボタンを押すと終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/8dba4cf0-bd8b-7c1a-0d15-4d50fc76647c.png)

# 例題1: 米国の日付形式を日本の形式に変換する
**症状**
SFDCなどの米国のソフトウェアからエクスポートしたデータは、"7/1/2019"のように年が最後になっているパターンがよくあります。このままだとExcel上で日付形式ではなく文字列として認識されてしまいます。

ちなみに、最近のバージョンのExcelだと、日付形式だとフィルターは割と便利で年や月単位でのフィルターができるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/6f010034-8622-cd24-a7dd-5d1149a4323a.png)

また、Excel上で日付形式として認識されているかどうかは、列の幅を狭めてみたときに "#####"という表示になるかどうかでもわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/56973f28-0bc7-f392-70ae-47d9c23cc83e.png)

文字列として認識されている場合は、以下のような表示となります。フィルターを表示すると、ひとつひとつのセルの中身が文字列で一覧になります。(しかも、順番は7月からではなく先頭文字の文字コード順になってしまうため10月の方が先に来ます。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/d359aa2f-33a2-f994-bf34-360716438535.png)

列の幅を狭くしても、"#####"という表示にはならずに中の文字列がそのまま表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/4808a019-5095-96f2-6c76-343b4d1e9069.png)

こうなってしまうと、後からいくら「セルの書式設定」ダイアログボックスで米国の日付形式 (MM/dd/yyyy)をセルに適用しても、日付形式には認識されません。これで困っている方も多いのではないでしょうか。

**解決策**
Excel上の対象範囲を選択してメモ帳にいったんコピペし、その後メモ帳の内容をコピーしてExcel上の元の対象範囲上に貼り付けます。そうすると、貼り付けのオプションからテキストファイルウィザードを起動できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/8c8cde61-d054-825d-31db-47f5c38ae61b.png)

ウィザード上で「次へ」ボタンを2回押して、ステップ3で「日付」を選び、順番に「MDY」を選びます。これで「完了」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/67c2e8bc-4b61-bc41-8354-fb24db1dd258.png)

すると、yyyy/DD/ddの順番でデータが入ります。フィルターを見てみると日付としてきちんと認識されていることがわかりますね！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/c2746695-cbf3-6b58-c63d-ed01ba04a155.png)


# 例題2: 日付形式から年月日を抜き出す
通常はYear関数、Month関数、Day関数とかを使うのでしょうが、ここではノンプログラミングな方法を使います。
例題1と同様に、日付データの対象範囲をメモ帳にコピペして貼り付けなおして起動するテキストファイルウィザードで、区切り文字を"/"にすると、3つの列にデータを分けることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/38c75a6e-f931-3038-1263-34a8ef6a7d40.png)

完了すると、以下の通りに貼り付けれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/5168f3d3-a7e9-82b7-8d41-afb241b979f4.png)


# 例題3: スペースで区切られた姓名を姓と名に分ける
これはもう簡単ですね。姓名の列をメモ帳にコピペしてそれをExcelにコピペしなおします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/1d05a877-5642-6ef0-c73c-4413b2d823f9.png)

テキストファイルウィザードでは、スペース区切りにして完了ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/881dff4c-dcf9-7651-033d-e70b2f54bf21.png)

するとこんな感じで貼り付きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/16a86308-f00d-2e8f-7972-529530dada12.png)


# 終わりに
いかがでしたでしょうか。いままでの例題のほかにも応用できる場面はきっといろいろあるはずです。テキストエディタとクリップボードを駆使してExcelのデータ加工をより便利にしてみてください。