saezosan
(saezosan)
#1
データテーブルのマージ(結合)で困っています。
もし、同じことを経験された方がおられましたら
解決方法をご教示頂けるとありがたいです。
複数のエクセルファイルの表をマージしていますが、
列名が、ひらがなとカタカナのファイルがあります。


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

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

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

を結合すると以下のように正常にそこだけマージされます。(既存の列の無いカラムには値はなく、該当するカラムのみが追加されています)
何かお心当たりの方がおられましたらよろしくご教示ください。
Yoichi
(Yoichi)
#2
こんにちは
これはDataTableクラスの(各メソッドの)内部仕様に起因するものと思われます。
例えば
一番の上のDataTable (列名が[きめつ&キメツ]とあるもの)に対して、これをdtAとすると
arrDataRow = dtA.Select("[キメツ&きめつ]='〇'")
とすると、[きめつ&キメツ]行が評価されて返ってくるかと思います。
.netのDataTable.Mergeメソッドの結果もアクティビティの結果と同じですが、
上記の仕様から意図しない結果になっていると思います。
そのため基本的には、列名はひらがなカタカナ等の各種正規化をしたときに同じものに
ならないようにした方が安全かもしれません。(あるいはLINQ等をつかって自前でマージする
アルゴリズムを実装すれば回避できるかもしれませんが)
saezosan
(saezosan)
#3
Yoichiさん、ご回答ありがとうございました。
いつもご活躍されているのを拝見しております。
DataTableクラスでは、[キメツ&きめつ]と[きめつ&キメツ]が同様のものとして
評価されてしまうということでしょうか。
仕様ということでしたら、他の方法(そこだけVBAを利用するなど)を
検討したいと思います。
列名はひらがなカタカナ等の各種正規化をしたときに同じものに
ならないようにした方が安全かもしれません。
ちになみに、ファイル名についてですが、ご参考までにご報告しますと、
対象のファイルは私の顧客が作成したものです。
サンプルとして単純に同じ「きめつ」のひらがなとカタカナにしたのですが、
実際は「きめつ&カドカワ」のようなある意味、「コンテンツ&プラットフォーム」のような
シート名なのです。(つまり、ひらがなが正規なのか、カタカナが正規なのか、判定が微妙なのです)
複数の担当者がそれぞれ気ままにシートを追加しており、
今回、RPA化にあたり、全てのファイルを照合したところ、上記の状態が判明した、
という話です。
ともあれ、代替手段を検討したいと思います。ありがとうございました。
1 Like
system
(system)
closed
#4
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.