web-dev-qa-db-ja.com

ロケールがコンマ(1,7)を予期している場合、ドット(1.7)で小数の貼り付けを処理

ドットが小数点記号として使用されているデータソースがあります。つまり、:1.49は「ほぼ半分」を意味します。変更できません。

この数値は、ExcelまたはCalcの数値セルにコピーして貼り付ける必要があります。ファイルは公開されており、誰でも取得できます( ここで取得 )ので、ユーザーのPC /プログラムを制御できません。

ほとんどのユーザーは、it_ITロケールのイタリア語で、小数点はコンマで区切られています。つまり、:1,49は「1.5」を意味します(ドットの代わりにコンマに注意してください)。

Italian-localeユーザーがコピーアンドペーストしようとしたとき1.49データソースから数値セルに、Calc/Excelは数値を小数として認識しないため、バナナになります。

セルに言語を設定すると、プログラムを閉じるまですべてが機能します。ドキュメントをもう一度開くと、設定が失われ、機能しなくなります

enter image description here

だから、私の質問:

  1. ユーザー定義のロケールに関係なく、ファイル/シートのロケールを強制的に「en_US」にすることは可能ですか?
  2. 言語属性を固定することは可能ですか?
  3. 他のアイデアはありますか? (「ユーザーに設定の変更を依頼する」ことはできません)

可能であれば、マクロは避けたいと思います。

ありがとう!

更新:Windows 10 x64を使用していて、LibreOffice 5.4.4x64にアップグレードしました。セルごとの言語設定はまだ保存されません。保存するのが想定なのか、それとも単なるビュー設定なのか(保存ボタンが点灯するので前者を推測します。)もわかりません。

TurboLab.itにいる私の友人 提案 これまでの最良の解決策:

  1. ユーザー入力を「テキスト」として受け入れるように設計されたセルを設定します
  2. 近くの一時セルで、ドットをカンマに置き換えて=SUBSTITUTE(E16;".";",")のようにします。
  3. 置き換えられた値に対して計算を行います
  4. 必要に応じて再変換する

興味のある方のための最終ファイル ここから入手できます

唯一の大きな欠点は、ユーザーが「コンマ」がイタリア語などの小数点記号であるロケールを使用している場合にのみ機能することです。

HTH。

貼り付けるたびに繰り返される手動ソリューション:

コピー&ペースト後;貼り付けたセルを選択します。
すぐに検索と置換を使用し、最初に「。」を置換します。 (千の区切り記号)を「」(つまり「なし」)に置き換えてから、「、」(元の小数の区切り記号)を「。」に置き換えます。新しい小数区切り記号)。

「特殊貼り付け」を使用して0を加算するか、1を掛けて、これらを数値として解釈する必要がある場合があります(==>任意のセルに1または0を配置し、コピーしてから、「特殊貼り付け」を実行します。 「値の加算」または「値の乗算」を選択します)

自動化:「マクロを記録する」、上記の「記録を停止する」を実行します。そこでは、ショートカットキーを割り当てることもできます。

0
Hannu