1

別のアプリケーションによって、数字の文字列 (「654」、「0.005」など) が入力されているスプレッドシートがあります。Excel は文字列に対して計算を実行できません。私のスプレッドシートは数分ごとに更新される (行が追加される) ので、範囲内のセルを自動的に数値に変換するスクリプトを書きたいと思います。

convertRange が数値に変換される文字列を含む範囲である私の解決策は次のとおりです。

method OnChangeInSpreadsheet():
if changedCell is NOT in convertRange
   currentHeight = convertRange.height
   expand convertRange to include new rows
   convert the new rows' strings

複雑になる理由は、文字列から数値への変換によって OnChangeInSpreadsheet 関数がトリガーされるためです。新しい行が convertRange の外側に追加されるように注意する必要があります。誰でも別の解決策を考えることができますか?

ありがとうございました!

4

3 に答える 3

1

文字列の値に1を掛けて、数値に変換してみましたか?数日前、数字が文字列として認識され、正しく動作しないという問題がありました。解決策は、それらに1を掛けるだけでした。

説明させてください:私VBAは、ワークシートから取得した数値の間でいくつかの計算を行うためにモジュールをコーディングしましたexcel。計算の結果は配列に入れられ、後で別のワークシートに変更されたExcel式の一部として(割り当てられたとおりに)「印刷」されました。私が抱えていた問題は、小数(たとえば、0.1234)が「。」の前に「0」を表示しないことでした。セル内。問題は、Excelがそれらを数字ではなく文字列として認識していたことでした。Excel GUIを使用してフォーマットを数値に変更しても、問題は解決しませんでした。

注:プログラミングでは、整数にdouble / floatを掛けて、整数をdouble/floatに変換することがよくあります

そのことを念頭に置いて結果を1を掛けたセルに出力(as in "=function(...) * 1")しました。これは機能しました。

于 2013-03-22T16:33:52.537 に答える
0

ASAP Utilitiesの機能「認識されない数字(テキスト?)を数字に変更」を使用することになりました。実際には、更新のたびにテキストを数値に変換する必要はないと判断したため、OnWorkbookOpen メソッド内で関数を実行します。

変更されたセルだけに ASAP Utilities 機能を実行するのは簡単です。上記のコメントで誰かが非常に有益に提案したように、前に Application.EnableEvents をオフにしてからオンにするだけです。

助けてくれてありがとう!

于 2013-03-25T22:12:45.953 に答える