データテーブルの列名で、同一音のひらがなとカタカナが混在している場合

データテーブルのマージ(結合)で困っています。
もし、同じことを経験された方がおられましたら
解決方法をご教示頂けるとありがたいです。

複数のエクセルファイルの表をマージしていますが、
列名が、ひらがなとカタカナのファイルがあります。
image

image

上記をマージして、以下のような結果を得たいのですが

image

実際には以下のようになってしまいます。(例は2つのテーブルですが、実際はループして複数の表をマージしています。デバッグで、マージする直前のテーブル内容と直後を比較しています)

image

ループの仕方に問題があるのかと、まったく共通点の無いファイルのテーブル

image

を結合すると以下のように正常にそこだけマージされます。(既存の列の無いカラムには値はなく、該当するカラムのみが追加されています)

何かお心当たりの方がおられましたらよろしくご教示ください。

こんにちは

これはDataTableクラスの(各メソッドの)内部仕様に起因するものと思われます。

例えば
一番の上のDataTable (列名が[きめつ&キメツ]とあるもの)に対して、これをdtAとすると

arrDataRow = dtA.Select("[キメツ&きめつ]='〇'")

とすると、[きめつ&キメツ]行が評価されて返ってくるかと思います。
.netのDataTable.Mergeメソッドの結果もアクティビティの結果と同じですが、
上記の仕様から意図しない結果になっていると思います。

そのため基本的には、列名はひらがなカタカナ等の各種正規化をしたときに同じものに
ならないようにした方が安全かもしれません。(あるいはLINQ等をつかって自前でマージする
アルゴリズムを実装すれば回避できるかもしれませんが)

Yoichiさん、ご回答ありがとうございました。
いつもご活躍されているのを拝見しております。

DataTableクラスでは、[キメツ&きめつ]と[きめつ&キメツ]が同様のものとして
評価されてしまうということでしょうか。
仕様ということでしたら、他の方法(そこだけVBAを利用するなど)を
検討したいと思います。

列名はひらがなカタカナ等の各種正規化をしたときに同じものに
ならないようにした方が安全かもしれません。

ちになみに、ファイル名についてですが、ご参考までにご報告しますと、
対象のファイルは私の顧客が作成したものです。

サンプルとして単純に同じ「きめつ」のひらがなとカタカナにしたのですが、
実際は「きめつ&カドカワ」のようなある意味、「コンテンツ&プラットフォーム」のような
シート名なのです。(つまり、ひらがなが正規なのか、カタカナが正規なのか、判定が微妙なのです)
複数の担当者がそれぞれ気ままにシートを追加しており、
今回、RPA化にあたり、全てのファイルを照合したところ、上記の状態が判明した、
という話です。

ともあれ、代替手段を検討したいと思います。ありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.