Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。

エクセルの見え消しデータを除いてデータを取り込む

gawa
15 - Aurora
15 - Aurora

エクセルでデータが取り消し線で見え消しになっていても、Alteryxで読み込むと普通に存在するデータとして処理されます。なので、時折「見え消しデータは削除のつもりだから、それらを無視してデータ処理してほしい」vs「見え消しされてもAlteryxで区別できなくて困る」というミスマッチが発生します。という相談を何回か受けたことがあったので、実現するワークフローを作ってみました。

 

処理の手順は以下のような感じになります;

① エクセルをzipファイルとみなし、zip内のxmlファイルからデータを読み取る

sheet1.xml

セル内の値等が格納されてる。シートが複数あるとsheet2.xml,sheet3.xml...のように複数xmlが存在する

style.xml

セルの書式設定が格納されている

sharedStrings.xml

文字列データは前述のsheet1.xmlではなく、こちらに格納されている。セル内に個別に書式設定がある場合、このファイルでオーバーライドされる。エクセル内に文字列データがひとつも無い場合、このxmlは存在しない

② ①で読み込んだxmlから必要なデータをどんどんパースしていって、取り消し線が設定されているデータを突き止め、空文字に置き換える

③ 特殊文字置換や日付データなどの変換処理を行って出力する

 

例えばこういうデータを処理すると

gawa_2-1674788137197.png

gawa_3-1674788305460.png

 

マクロの上側のアンカーからはこんな感じで出てきます。A1,C1,D2,B4,B6はセル内全部取り消しなので、空です。B3,C5は文字列の一部だけ取り消しなので、部分的に取り除かれます。

gawa_5-1674788422777.png

 

下側のアンカーからは、取り消し線があるセル限定で、処理前後のデータを見比べることができるようにしてます

gawa_4-1674788398996.png

 

添付にマクロ含んだyxzp一式置いておきますので、ご自由にお使いください。

一応デバッグはしてありますが、エラー出たらすいません(エクセルの自由度が高すぎるので、複雑なxml書式に対応したREGEXパースできているか、ちょっと自信ないです)。

あと、条件付き書式で取り消しになってるデータは、どうやっても無理だったので、対象外にしてます。こちらも、予めご承知おきください。

2件の返信2
AkimasaKajitani
17 - Castor
17 - Castor

@gawa さん

 

たまに要望出てくるやつですね・・・。

 

Excelの中まで分析して見るという手法はまだやったことないですが、また機会があれば使ってみたいと思います。

 

gawa
15 - Aurora
15 - Aurora

@AkimasaKajitani さん

弊社は未だにエクセルに見え消しを多用する人が多くて、割と需要があったりします。こういうの作ると「エクセルに見え消しでデータいれても良いんだ~」と、データリテラシー的にはあまりよろしくない方向に曲解されそうで、それはそれで嫌なのですが・・・笑