Excel VBA QueryTablesで0が消失する問題(0落ち)を回避する設定

 

Excel VBAでCSV(Comma-Separated Values)形式のデータを扱う際に、セルに0が含まれている場合に0が消失する問題(0落ち)があります。これを回避し正確なデータにします。

 

基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

 

Excel VBAで0落ちが発生するデータ

CSV形式のファイルからデータを読み込む際、セルに先頭に0が含まれている場合、0が欠損する場面があります。

たとえば、数値をつかったコードで0001は1に、日付の2024/01/05は2024/1/5になります。

 

0落ち回避のやり方

CSVファイルを読み込む際に、セル内の値が0であるかどうかを確認して、必要に応じて対策することで0落ちを回避します。

 

ポイント

なかには、0落ちしていい項目もあるので、事前に項目編集内容がどうなるのが正解か確認したほうがいいでしょう。

 

ExcelVBAエキスパートベーシックは仕事の効率をあげる人の資格です。
本サイト参考:日常業務でExcelを多用し、手動作業を減らしたいと考えている方におすすめの記事

 

Excel VBAで0落ち除算を回避するサンプルコード
    ' CSVファイルをExcelブックにインポート
    With newWb.Sheets(1).QueryTables.Add(Connection:= _
        "TEXT;" & filePath, Destination:=newWb.Sheets(1).Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True ' カンマ区切りの場合
        .TextFilePlatform = 65001 ' UTF-8の場合
        .TextFileColumnDataTypes = columnDataTypes ' 各列のデータ型を指定
        .Refresh
    End With

CSVをQueryTablesを使いExcelに展開します。このコードで0落ちを回避している箇所は、.TextFileColumnDataTypes = columnDataTypes  は各列のデータ型指定になります。

 

上記に記載していませんが、columnDataTypes =Array(2, 2, 2, 2, 2, 2, 2)と事前にセットします。2は列のデータ形式で文字列です。データ項目数分設定すれば文字列扱いでExcelに展開できます。

 

CSVからExcel出力の詳しい内容を知りたい方は、下記ページをチェックしてください。

ExcelVBAを実務で活用する方法「CSVからExcel出力」

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。