ロケールがコンマ (1,7) を期待しているときに、ドット付き小数点 (1.7) の貼り付けを処理する

ロケールがコンマ (1,7) を期待しているときに、ドット付き小数点 (1.7) の貼り付けを処理する

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

この数字はExcelまたはCalcの数値セルにコピー&ペーストする必要があります。ファイルは公開されており、誰でも入手できます(ここから入手) なので、ユーザーの PC/プログラムを制御できません。

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

イタリア語ロケールのユーザーがデータソースから数値セルにコピー アンド ペーストしようとすると1.49、Calc/Excel は数値を小数として認識しないため、エラーが発生します。

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

ここに画像の説明を入力してください

そこで私の質問です:

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

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

ありがとう!

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

答え1

TurboLab.itの友人たち提案されたこれまでの最善の解決策:

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

最終ファイルは、興味のある方のために、こちらから入手可能

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

ありがとう。

答え2

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

コピー & 貼り付け後、貼り付けたセルが選択されます...
すぐに検索と置換を使用して、最初に「.」(千単位の区切り)を「」(つまり「なし」)に置き換え、次に「,」(元の小数点区切り)を新しい小数点区切りの「.」に置き換えます。

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

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

関連情報