みなさんお疲れさまです
データテーブルにおいて、2項目の数値を比較した結果を、別項目(1列追加)に書き込みたいです。
どのような実装が考えられますでしょうか?
まず、どう考えましたか?
そうですね。。。
データテーブルから1行づつ読み込み、項目を比較、結果を格納
まあこれならばいけそうですけれど、もう少し別の効率的な方法が無いかなと。
私もそのロジックでした(^・^)
他の方から、もっとCoolな方法が回答されるかもしれませんね。
こんにちは。
3000レコードだと50分近くかかってしまいます
処理速度を早くしたいなら、データテーブルに3000件比較した結果を格納して
全件(3000件なら3000件)終了後にExcelに書きこむと早くなると思います。
「セルに書き込み」の部分を row(6) = “Yes” にするのでダメですか?
同じシート操作しているように見えるので……。
ytakayamaさんがおっしゃる通り、ほかにExcelファイルを操作されていないのでしたら自動保存をオフにしてループ終了後保存してやるとだいぶ高速になると存じます。
@_Chuki
セルに書き込みの箇所を row(6) = “Yes” というのが、よくわかっておりません
“G” + wkcellとなっている箇所をrow(6)としましたが、エラーとなってしまいました
お疲れ様です
直接データテーブルに書きこもうと、アサインアクティビティで、row(6)と指定しましたが、row(6)が見つかりませんとなりました。
そのため、データテーブル構築で6項目定義し、再度試しましたが、エラーとなります。
row(6)は0から数えて7番目の列です。
最初が何列あったデータなのかわからないのですが、もともとF列までしかなかったデータテーブルなのでしたら、「データ列を追加」アクティビティでG列をDataTableに追加してください。
こんにちは。
@_Chuki さんもおっしゃっている通り、おそらく元々のデータテーブルに存在しないためエラーとなっていると思われます。比較した結果(Yes)を入れれる列を追加しましょう。
可能であれば、エラーが出た際はどんなエラーがでたかスクリーンショット等で示して頂けると、対応策を出しやすいと思います。
お疲れ様です。
傍から見ていてここでつまづいているのかな?と思う点がありましたので補足してみます。
111161さんがやりたいことは
X列あるデータテーブルの中の2項目を比較しX+1列目に結果を記入したい
と読み取っていますが、その場合、結果を記入するための列を、結果を書き込む前にあらかじめDTに用意してやる必要があります。
(方法はEXCEL読み込み時に1列多く読み込む、データ列を追加アクティビティetc色々あります)
列を用意しておけば先にあったアドバイス通りrow(X+1)に結果を書き込むことが可能だと思います。
こんにちは、
for each rowの内で数値を比較しずに一回条件としてフィルターすればスピードがアップすると思います。
dtResult = (From p in dtYourData.Select() where(p.Item("Number1").Equals(p.Item("Number2"))) Select p).ToArray.CopyToDataTable()
dtResult で別列に書き込みの時間が掛からないと思います。
1列多く読み込む!は今度やってみたいと思います
ありがとうございます
自動保存オフで、かなり早くなりました。
さらなる高速化は、今後検討したいと思います。
ありがとうございます
1列追加する方法が、まだ成功していませんが、エクセルを1列多く読み込み、計算結果をここに格納、最後にエクセルに出力で、いつかやってみようと思います。