0

これは少し奇妙かもしれませんが、私はすでに導入されているシステムに取り組んでおり、データを再構築せずに改善する方法を探しています。

私が持っているのは、次の列とデータ構造を持つスプレッドシートです。ここでスプレッドシートをより適切に説明する方法がわかりませんでした。

LocalizationPackId | TextValue | PageId | TargetId | ApplicationId
         1         |    xxx    |   1    |  AA1     |       1
         1         |    xxx    |   1    |  AB1     |       1
         2         |    xxx    |   1    |  AA1     |       1
         2         |    xxx    |   1    |  AB1     |       1
         3         |    xxx    |   1    |  AA1     |       1

もちろん、実際のシートには、各 LocalizationPack のそれぞれに数百のエントリがあります。私が探しているのは、LocalizationPackId = 1 に含まれる PageId + TargetId + ApplicationId の一意のエントリに、後続のすべてのローカリゼーション パックにもミラー エントリが含まれていることを確認する手法です。

上記の例では、MACRO の実行時に欠落している値をチェックしたいと思います。LocalizationPack 1 に値 1/AB1/1 があることがわかり、その値について他のパックをチェックします。次に、LocalizationPack 3 に 1/AB1 が欠落していることを検出し、LocalizationPackId が正しく、TextValue = "NEEDS LOCALIZATION" であることを除いて、LocalizationPack 1 の元の行をミラーリングする行を作成します。また、新しく作成された行は、理想的には赤で強調表示されます。

マクロの経験はありませんが、C# はかなりよく知っています。誰かがこれを始めるのを手伝ったり、このようなことを達成するために必要なテクニックを示すガイドを教えてくれませんか?

4

1 に答える 1

0

不足しているローカリゼーション パックを、マクロではなく数式で特定することから始めます。LocalizationPackId がセル A1 にあり、他のラベルが行 1 にあり、データが行 2 から始まる場合、行 2 の適切な数式は次のようになります。

=COUNTIFS(C2:C$1000,C2,D2:D$1000,D2,E2:E$1000,E2)-(MAX(A2:A$1000)-A2+1)

... 次に、関連するすべての行をコピーできます (数式を行 1000 にしましたが、必要なだけ簡単に実行できます)。

(編集)

私のスプレッドシートでは、列 G に上記の式が表示されます。

ここに画像の説明を入力

(編集の終わり)

この数式の結果は、PageId、TargetId、および ApplicationId の各組み合わせに対応する負の数であり、このローカリゼーションが最初に導入された後にパックから欠落しているバージョンの数を示します。

ローカリゼーションが欠落している=COUNTIF()パックはわかりませんが、各パックに存在するローカリゼーションの数を知ることで、正しい方向に進むことができます。

検索を自動化して、VBA を使用して各パックに欠けているローカリゼーションを正確に定義することもできますが、これをあまり頻繁に行わないと、VBA コードの作成とデバッグが必要以上に面倒になる可能性があります。上記の=COUNTIFS()式は、ローカリゼーションの欠落がないという自動化された継続的な保証を提供します。

これを頻繁に行う場合、この=COUNTIFS()コラムは、VBA コードがそのプロセスを自動化するための良い出発点になります。

于 2013-01-23T21:44:32.687 に答える