24
テキストエディタを使用してNumbersデータのシーケンスを修正する方法

AppleのNumbersアプリを使えば、高度なスプレッドシート作業が可能です。しかし、Microsoft Excelと同様に、スプレッドシート内のデータのクリーンアップ機能が不足しています。Microsoft Wordではパターンを使って値の一致や置換が可能ですが、Numbers、Excel、Pagesではそれができません。

これは、Numbers にインポートまたはペーストした際に、異なる形式でフォーマットされた日付、数値、通貨値をインポートまたはペーストした場合に発生することがあります。Numbers は入力時に多くの標準的なフォーマットを修正しますが、ペースト後や、他のソフトウェアやウェブサイトから一般的にエクスポートされる CSV(カンマ区切り値)ファイルを開いた場合には、同じデータが元の異なる形式のままになることがあります。

これは名前で最もよく見られる現象で、「姓、名」のようにある形式でリストを受け取り、別の形式にしたい場合などに発生します。あるいは、データの各部分によって名前の形式が異なっている場合もあります。例えば、名、姓、ミドルネームの頭文字を3つのフィールドに分割するなどです。しかし、必要なのは 正規化された データ、つまり、並べ替えや視覚的なスキャン、その他の方法での整理を容易にするために、エントリが同一の構造を持つデータです。

驚くほどシンプルな解決策があり、費用もかからず、手作業による再入力や編集作業を大幅に省くことができます。Numbersでは、任意の数のセルの内容をコピーし、テキストエディタに貼り付けることができます。編集中にタブと改行キーを保持していれば、テキストエディタで貼り付けた内容を修正し、修正したデータをコピーして、Numbersでコピーした元の場所にそのまま貼り付けることができます。

私は BBEdit を使って、「正規表現パッチマッチング」(略して regexp) と呼ばれる高度なワイルドカード一致を実行し、一致した要素でデータを置き換えています。一部のアプリはワイルドカードをサポートしています。ワイルドカードでは、特殊文字やシーケンスを挿入して、ピリオドやその他の句読点に囲まれた任意の数字 (0 から 9) や完全な文など、テキストの一部と一致させることができます。regexp は洗練されており、ほとんど単純なプログラミング言語です。検索で一致した要素はグループ化できるため、テキスト置換の一部として並べ替えることができます。BBEdit では、検索部分に Unix 版の regexp にちなんで Grep というラベルが付けられています。(BBEdit の無料版には必要な機能がすべて含まれています。標準版をダウンロードしてインストールすると、30 日間の試用期間中はすべての機能にアクセスできます。試用期間が終了すると、アプリはこの記事で必要なすべての検索と置換のオプションを含む、より限定された機能セットに「ダウングレード」されます。)

たとえば、次のように名前をリストするデータがあるとします。

Jane Doe (名と姓を 1 つのフィールドに入力) Jane および Doe (名と姓を別々のフィールドに入力)  Doe, Jane (姓を先に入力し、カンマで区切ってから名を入力)

書式設定とスプレッドシートの目的のため、すべての名前を名と姓のフィールドに分割して、姓で並べ替えることができるようにし、電子メール リスト プログラムにエクスポートするときには名を個別に使用することにしました。

まず、Numbersで姓と名の隣接するフィールドが2つあることを確認してください。「フルネーム」フィールドが1つしかない場合は、そのフィールドのセルを選択し、Optionキーを押しながら右矢印キーを押して、その名前の列の後に列を追加します。わかりやすいように、名前の列のラベルを「First Name」と「Last Name」に変更してください。

次に、混合データセットがある場合は、単一のフィールドの内容または両方のフィールドの内容を囲んで選択範囲をドラッグしてデータをコピーします。

BBEditに貼り付けます。各フィールドがタブで区切られているのが分かります。(タブ、スペース、改行、その他の文字を表示するには、「 表示」>「テキスト表示」>「非表示文字を表示」を選択してください。)

検索/置換の値を入力してデータを修正できます。  「検索」>「検索」を選択し 、「Grep」ボックスにチェックを入れて正規表現を有効にします。すべての文字列を Doe, Jane 正しい順序で2つのフィールドに入力して修正するには、次の検索を使用します。

^(.*?), (.*)$

このパターンは、行の先頭 ( ^) から一致し、最初のコンマ ( ) までのすべてのテキストを検索して、それを置換行で使用するためにグループ化し、次にコマンドとスペースを検索して、行の末尾 ( ) までの(.*?)すべてのテキスト ( ) の 2 番目のグループを作成することを意味します。(.*)$

「置換」フィールドに次のように入力します。

2t1

ずっと簡単になりました。つまり、検索パターン ( 2) から 2 番目のグループ化を取得し、それにタブ ( t) を続け、次に最初のグループ化 ( 1) を続けるということです。 Doe, Jane は になります Jane[tab]Doe

パターンが単独で存在する場合、または名前セット全体が該当する場合は、「すべて置換」をクリックできます。または、BBEditでテキストの範囲を選択し、「検索」ダイアログで「選択テキストのみ」にチェックを入れてから「すべて置換」をクリックすることもできます。

警告:  Numbers に戻る前にコピーを作成してください。コピーした選択範囲に、開始時または入力する予定よりも多くの行または列がある場合、Numbers では貼り付けによって他のデータを上書きできます。

すべてのデータの書式設定が完了したら、BBEditでデータを選択してコピーし、Numbersで貼り付けたい開始セルを選択します。貼り付けられた行は下方向に進み、タブは右側の列のセルに変換されて貼り付けられます。

最近インポートしたデータで、Numbers の能力を超える小さな変更を加える必要がありました。日付と時刻が 2019/10/28, 22:51, という形式でフォーマットされていたのですが、Numbers はカンマを日付スタンプの一部として認識しませんでした。BBEdit を使ってデータを往復処理し、カンマだけを見つけて何もない状態に置き換えることもできました。しかし、下の図のように、もっとシンプルな例で説明できます。

上段:日付と時刻の間にカンマがあるなど、フォーマットが間違っている箇所を修正するには、BBEditの検索と置換機能を使ってパターンを一致させて修正します。下段:修正したデータを貼り付け、Numbersのデータフォーマットオプションを使って希望どおりに表示させます。フォーマットが修正されれば、データが並べ替えに適した構造になっていることがわかります。

正規表現の詳細については、BBEditのマニュアルを参照してください。開発元であるBare Bones Softwareが詳細な説明を提供しています。しかし、インターネット検索エンジンを使えば、必要な具体的な解決策が見つかることも少なくありません。「regexp」と目的のキーワードを入力すると、たいていの場合、既に誰かがその問題を解決しています。BBEditの検索機能では、標準の正規表現が使用できます。

BBEdit の 30 日間完全試用期間中、またはアプリの有料版では、ソフトウェアの Pattern Playground を使用してパターンをテストすることもできます。Bare Bones のドキュメントとこの Apple の短い記事をお読みください。

パターンプレイグラウンドでは、パターンをテストし、ライブ結果を確認できます。適切なクエリを作成するのに役立ちます。

Mac 911に問い合わせる

よくある質問とその回答、コラムへのリンクをまとめました。FAQ集をご覧になり、ご質問が網羅されているかご確認ください。もし掲載されていない場合でも、私たちは常に新しい問題解決の糸口を探しています!ご質問は [email protected]までメールでお送りください。スクリーンショット(必要な場合)と、氏名の使用可否を明記してください。すべての質問に回答できるとは限りません。メールへの返信は行っておりません。また、トラブルシューティングに関する直接的なアドバイスも提供できません。