[[20220501221715]] 『セル内容の転記ミスについて』(hoge22) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内容の転記ミスについて』(hoge22)

お世話になっております。
csvファイル(A)のセル範囲をxlsmファイル(B)に正確に転記できません。
(転記マクロは後述します)
説明)
・Aのセル範囲の一部がBに正確に反映されません(後述)
・データ数は同じで、データの並び順が異なっています
・現在のところ不具合パターンは把握できていません
・マクロを実行するのは週に一度程度で今まで特に異常に気付いておりません
(たまたま今回気付いたのかも知れません)
・今回気付くまでに行ったパソコン作業で、気になるのはWINの更新ぐらいです
・何度かパソコン、エクセルを再起動していますが、状況は同じです。
不具合内容)※抜粋です

 No.	Aのセル内容	        Bの転記内容	        判定
 1	ショウナンサルヴォ	ショウナンサルヴォ	o
 2	シャイニーゲール	シャイニーゲール	o
 -	-	                -	                -
 162	オーブラック	        ソプラノナイト	        X
 163	カツノナインズ	        カツノナインズ	        o
 -	-	                -	                -
 325	シンデレラサリサ	シンデレラサリサ	o
 326	ディオアステリア	ディオアステリア	o
 -      -                       -                       -
 968	メイショウハナモリ	プラチナムレイアー	X

使用マクロ)※関連箇所のみ

    Dim sh As Worksheet     '(B)ファイル
    Dim wsh As Worksheet    '(A)ファイル
    Dim er As Long          'End of Row(wsh)

    Set sh = ThisWorkbook.Sheets("hoge")
    Set wsh = Workbooks.Open("C:\hatena\W.csv").Sheets("W")
 (略)
    With wsh
        er = .Cells(Rows.Count, "C").End(xlUp).Row
        nm = .Range("C2:C" & er).Value
 ・・・
    End With
 (略)
    With sh
        .Range("H2:H" & er).Value = nm
 ・・・
    End With
 (略)

今まで(おそらく)問題なく、途方に暮れています。
どのようなことを確認したら解決できるかをご助言願います。
確認は明日以降になりますが、よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


すみません。

 Dim nm()

の宣言を記載忘れていました…
(hoge22) 2022/05/01(日) 22:52


>Aのセル範囲の一部がBに正確に反映されません
>データ数は同じで、データの並び順が異なっています

前者は仰っている意味がよくわかりません。
後者は抜粋ということで想像でしかありませんが、実はソートとかしてるとかありませんか?

とりあえず、提示の内容からして一旦配列に格納せず、↓のようにコピーして値貼付けするように考えてみてはどうですか?

    Sub てすと()
        Dim er As Long

        With Workbooks.Open("C:\hatena\W.csv").Sheets(1)
            er = .Cells(.Rows.Count, "C").End(xlUp).Row

            If er < 2 Then Exit Sub

            .Range("C2:C" & er).Copy
            ThisWorkbook.Sheets("hoge").Range("C2").PasteSpecial Paste:=xlPasteValues
        End With
    End Sub

さらに、提示されていない部分との絡みもありますがCSVファイルからのデータの取り込みであれば【ブック】として開かずに、【QueryTables.Add】を使ってデータの取り込みをするようにするのも手かもしれません。

(もこな2) 2022/05/02(月) 01:24


横から失礼します。
まずは現状把握が必要でしょう。
・読み込んだ直後でどのようになっているか。
・転記した直後ではどうなっているか?
・その後、そのセルを変更していないか?
ブレークポイントなり、STOPを入れるなりして、
途中で止めて内容確認してください。
どこで、想定と異なることになるのか追跡してください。

(γ) 2022/05/02(月) 07:39


現状把握の結果、原因が判明しました。

nm()にAファイルの内容を格納した後に別の処理でCファイルの内容を格納しておりました。
通常はAとCは同じ内容なので深く考えずに同じ変数名を使用しましたが、時間差により
AとCの内容が異なることが判明しました。
(そもそも同じ内容ならCを取込む必要はなかったわけですが…恥)

QueryTables.Add…初見ですがcsvファイルの数万行データの取込みに向いていそうですね?
調べてみようと思います。

恥ずかしい相談内容ですみませんでした。
対策はこれからですが、ギブアップの時はよろしくお願いします。

もこな2さん、γさん、ありがとうございました。
(hoge22) 2022/05/02(月) 11:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.