2017-10-03 8 views
0

Excelを使用して.csvファイルを出力するシステムから.xlsファイルで読み取れる別のシステムにデータを変換しています。 1列はサイズで、4-6,6-8などの用語が頻繁に使用されます。Excelでcsvを開くと、自動的に日付に変換されます(6月、8月など)Iそのデータを取得するには .NumberFormat = "md" を使用することができますが、もちろんそれはまだ日付の値であり、私はそれを実行しようとするすべての操作を元に戻します。それを正確にその形式のテキストに変換する方法はありますか? .NumberFormatを "@"として宣言すると、値がシリアルに変更されます。私は在庫の目的のために1つの長い製品IDコードを作成するために、いくつかの他の列と共にサイズを使用します。サイズが日付値に変わると、データの一部が失われてしまいます。Excelを番号形式から日付形式に変換できないようにする

+1

csvファイルをテキストファイルとして読み込んだ後、 (カンマを区切り文字として使用)、その列がテキストのままであることを指定します。 – YowE3K

+0

私は、他の人が走るための "火と忘れ"プログラムを作成しようとしており、できるだけ特別なオープン/インポート手順を避けたいと思っています。 Excelのこのようなバグのように見えますが、この設定を簡単に無効にすることはできません。奇妙なことに、ExcelのConcatenate関数は正しい結果を生成しますが、VBAでは生成しません。 '= CONCATENATE(月(A1)、" - "、日(A1))' – CAW

+0

csvファイルをテキストファイルとして読み込み、 "text to columns"を実行することは " "アプリケーション - ユーザーが関係する限り、そのボタンがどのようなコードを使用していてもボタンプレスです。 – YowE3K

答えて

0

VBAから完全に実行される、つまり特殊なインポート条件に依存しないこの問題の解決策を発見しました。

Dim Size as String 
For i = 2 To LastRow 
    If IsDate(Range("H" & i).Value) Then 
     Size = Month(Range("H" & i)) & "-" & Day(Range("H" & i)) 
     Range("H" & i).NumberFormat = "@" 
     Range("H" & i) = Size 
    End If 
Next i 

私は列のテストが一緒に文字列ですサイズ値(XL、SM、12T、など)を、含まれています。私は、これは予期せぬエラーを作成する可能性を持っている場合は特に、任意のポインタや提言をいただければ幸いです値は日付(4-6,6-8)に変換されます。このと思われ、それを文字列値に変換し、将来のすべての使用(連結および論理テスト)の文字列値として適切に処理します。

関連する問題