2009-05-05 11 views
0

I 'はここ要件が列「C」内のセル内のすべての数字の合計を取得し、列に対応するセルの値を置くことである alt text http://i43.tinypic.com/wsnxci.jpg段落内のすべての桁を合計する方法(セル内のテキスト)?

(下図参照)Excelシートを有しますB '(私の例では、1 + 0.25 + 0.25 + 1 = 2.5)。列 'C'の値は、チームによって与えられた入力に基づいて動的に変化する可能性があります。要件は、 'C'列のセルが変更されると自動的に 'B'の値を自動的に更新することです。

私は、スプレッドシートの形式(2つの異なる列のテキストと数値)を変更するようクリエイターに依頼しましたが、その方法は標準テンプレートのために受け入れられません。

ご協力いただきますようお願い申し上げます。

よろしく、 - アシシュ

答えて

4

これはマクロを使用して、セル内のテキストを変更することなく、達成することができます。 あなたはいくつかのことをする必要があるので、実装は少し遅れることを認めなければなりません。

1 - セル内容全体をトークン化し、トークンを文字列配列に格納します。

既に問題があります。セルの中にあるテキストは大きく矛盾しています。 -250 ms、 - 250 ms、 - 1 sec、 - 1 secです。このため、各インスタンスを確認する必要があります。したがって、値が数字であるかどうかだけでは判断できませんので、チームメンバーが便利に提供したすべての順列をチェックする必要があります。

これを行う最善の方法は、正規表現をチェックすることです。したがって、#2は次のようになります。

2 - 各値をチェックして、多くの4つの正規表現のいずれかと一致するかどうかを確認します。

3 - 一致するRegexに応じて、数値を抽出します。

a)単純に値(つまり - > 250)の場合、msまたはsecが値を処理するかどうかを確認します。 IF msの場合、数値を1000で割ります。秒の場合は、そのままにします。総数に数を加えます。
b)ダッシュ( - )の前の数字の場合、ダッシュを削除してa)を繰り返します。a)
c)数字の後に文字がない場合は、ステップa)を繰り返します。期間、何もしないでください。これは弾丸です。

+0

ありがとうございました 最終的に私は値を一貫した方法で入力するように説得しました。したがって、値は '-xx ms'または '-xx sec'(私の人生を少し楽にしました)になります。 回答に示唆されているように残りのロジックを実装しました。 素晴らしい作品...ありがとうございました! – Vini

+0

うれしい私は助けることができました! – jgallant

関連する問題