最後の数字がゼロに変換される入力時に、18桁の数字列を持つテンプレートがあります。そのため、列をテキスト列に変更しました。xls を csv に変換する必要があります。変換するときに、数値の長さが 18 未満の場合は列を検証しています。その数値にゼロを埋めています。それをcsvに変換した後、数値は科学数値として変更されます。数値を科学的に変換しない可能性はありますか。テキスト列では同じままです。前もって感謝します。
1 に答える
これを上記のコメントに追加するつもりでしたが、そのオプションが表示されないので、回答として追加します。
最初の点で、Excel では 15 桁の有効数字しか使用できないため、最初は最後にゼロが表示されていました。はい、18桁の入力を処理するには、列をテキストとしてフォーマットする必要があります。ただし、Tim Williams が指摘したように、書式設定によって保存するファイルの内容が決まります (ワードパッドで開いたときに正しい書式設定が表示されるのはそのためです) が、Excel でファイルを再度開くと役に立ちません。
問題は、Excel がユーザーを「助ける」ことに熱心であるため、ほとんどの場合、.csv ファイルを開いたときにテキスト インポート ウィザードが表示されないことです。代わりに、ファイルをまっすぐに開き、コンテンツ形式について最善の推測を行います。あなたの場合、先行ゼロの存在にもかかわらず、誤って推測します。
これを回避する 1 つの方法は、ファイルを .csv として保存することですが、拡張子が異なることを確認してください。.cma を使用します。ファイルを保存するときは、「MyFile.cma」のような名前で保存しますが、[ファイル名] ダイアログでその名前を二重引用符で囲む必要があります。そうしないと、Excel は MyFile.cma.csv として保存します。
.cma (またはそのようなその他の認識されない拡張子) を開くと、Excel はテキスト インポート ウィザードを表示します。これにより、(Tim が提案したように) ファイルを開いたときに列をテキストにするように指定できます。そうすれば、数値、より具体的には科学的数値に変換されません。
もう 1 つのオプションは、VBA で OpenText メソッドを使用してファイルを再度開くことです。
Workbooks.OpenText FileName:= _
"C:\Users\YourName\Documents\Data\YourFile.cma", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited,
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
Space:=False, Other:=False,
FieldInfo:=Array(Array(1, 2)), TrailingMinusNumbers:=True
これは、これを自動化するためにどれだけの労力を必要とするかによって異なります。