データベース マネージャーから .csv ファイル形式のデータ パケットを受け取ります。このデータを Excel にインポートして、書式設定と並べ替えを行います。ただし、1 つの列に解析して並べ替えたい 3 つの情報が含まれています。この列の 1 つのセルは、ユーザー ID 番号とユーザー名 (例: "83920 - johndavis") で構成されます。これらの各用語に基づいてこの列を並べ替えられるようにしたいと考えています。Excel のマクロを使用してこれを行うことは可能ですか。それとも VBA を使用する必要がありますか。可能であれば、この問題への対処方法を教えてください。
私は C と Python の経験があるので、VBA の知識は限られているものの、コンピューター サイエンスの経験はあります。
以下は、解決策を試行錯誤しながら収集した情報です。このページが出発点でした。https://www.cedarville.edu/insights/blog/excel-how-to-parse-data-split-column-into-multiple.aspx しかし、この方法を使用しようとすると、列の分割でエラーが発生し、適切に分割されませんでした (画像を参照)。これは、列のデータが Excel シートの別のページから VBA で操作された実際のデータであるためだと思います。この特異性を解決するにはどうすればよいでしょうか?
答え1
これは Excel の数式が含まれているため、かなり奇妙な CSV です。CSV にデータ以外のものが含まれていることは想定されていません。
現在、セルにはデータ値だけでなくB09 - Theater
、次の数式も含まれています。
=IFERROR(@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE"""), "B09 - Theater")
のエラーの場合式は (ダミー) 関数を評価し@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE""")
、エラーが返された場合は値を書き込みますB09 - Theater
。
これらの数式を維持する必要がなく(目的があるかどうかはわかりませんが)、データだけが必要な場合は、すべてのセルを選択して新しいシートに貼り付けます価値観。
その後はiskyfireの答え。
答え2
あなたの投稿に対する私のコメントによれば、代わりにこれを実行できます:
また、おそらくプレフィックスが付いた VBA 関数への参照を示す画像は、@__xludf.
その関数が現在のブックでは使用できないことを意味していることにも注意してください。別のブックの別のモジュールにあるか、使用できないライブラリにある可能性があります。
いずれにせよ、パート1の単純なケースではデリミタpart2では、上記の式を使用できます。
より複雑なケースでは、データ内の任意のセルを選択し、「データ」>「データの取得と変換」>「テーブル/範囲から」を使用して PowerQuery を開始できます。
Power Query エディター内で、分割する列を選択し、[ホーム] > [変換] > [列の分割] > [区切り記号による] を使用して、次のように構成できます (例):
その後、[ホーム] > [閉じて読み込む] を使用して、結果をワークブックに再度読み込むことができます。
答え3
テキストを列に変換する
複数のデータ値を含むセルがある場合は、組み込みのテキストを列に変換ウィザードを使用してそれらを分離できます。これにより、列ごとに 1 つのデータ値を持つテーブルが作成され、Excel で使用できるすべてのフィルターと並べ替え方法を使用できるようになります。
注記:たとえば、各データ値を区切る一意の区切り文字が複数ある場合は、83920/johndavis - new york city
検索と置換を使用して、すべての-
文字を に変更したり/
、その逆を行ったりすることができます。各データ値を区切る区切り文字は同じである必要があります。そうでない場合は、ウィザードを複数回実行する必要があります。
余分な機能の削除
保有するデータがカプセル化されている場合は、Match entire cell contents
チェックマークを付けてLook in: Formulas
選択した状態で検索と置換を使用できます。
範囲を選択し、「検索と置換」に移動して入力し、「すべて置換」を実行します。たとえば、=IFERROR(@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE"""),"
空の文字列に置換します。
その後、再度実行して終了部分を削除し、")
空の文字列にすることができます。
大規模な検索と置換の操作を行う前に、ワークシートの元のコピーをバックアップしておくようにしてください。