回答編集履歴
4
質問修正で不要になった部分を削除
    
        answer	
    CHANGED
    
    | @@ -27,10 +27,6 @@ | |
| 27 27 |  | 
| 28 28 | 
             
            追記
         | 
| 29 29 | 
             
            ---
         | 
| 30 | 
            -
            CSVファイルは、画像でなくて、テキストデータをそのままコピーして貼り付けてください。
         | 
| 31 | 
            -
            回答者がサンプルデータを手入力する手間が省けます。
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            ---
         | 
| 34 30 | 
             
            列を結合したり、それで並べ替えたりという操作があるので、
         | 
| 35 31 | 
             
            私なら、ADOを使って取り込みますね。
         | 
| 36 32 | 
             
            SQLで簡単にデータを加工して、それをシートに貼り付けることができますので。
         | 
3
修正
    
        answer	
    CHANGED
    
    | @@ -40,7 +40,7 @@ | |
| 40 40 |  | 
| 41 41 | 
             
            下記のようなSQLを実行して、
         | 
| 42 42 |  | 
| 43 | 
            -
            ``` | 
| 43 | 
            +
            ```vba
         | 
| 44 44 | 
             
                sSql = "SELECT CODE1 & CODE2 & CODE3 AS CODE, NAME, FLAG1, FLAG2, FLAG3 " & _
         | 
| 45 45 | 
             
                       "FROM [tera169663.csv] ORDER BY 1"
         | 
| 46 46 |  | 
| @@ -54,7 +54,7 @@ | |
| 54 54 | 
             
            シートA と 作業用シート(取り込んだCSVデータ) の不一致データをSQLで抽出して、それをシートAに追記します。
         | 
| 55 55 | 
             
            不一致データの取得は下記のようなSQLです(いわゆる不一致クエリというものです)。
         | 
| 56 56 |  | 
| 57 | 
            -
            ``` | 
| 57 | 
            +
            ```vba
         | 
| 58 58 | 
             
                sSql = "SELECT T.CODE, T.NAME, T.FLAG1, T.FLAG2, T.FLAG3 " & _
         | 
| 59 59 | 
             
                       "FROM [TempSheet$] AS T LEFT JOIN [シートA$B3:F] AS A " & _
         | 
| 60 60 | 
             
                       "ON T.CODE = A.CODE " & _
         | 
| @@ -63,7 +63,7 @@ | |
| 63 63 | 
             
            ```
         | 
| 64 64 | 
             
            シートBに出力するデータは下記のSQL文になります。
         | 
| 65 65 |  | 
| 66 | 
            -
            ``` | 
| 66 | 
            +
            ```vba
         | 
| 67 67 | 
             
                sSql = "SELECT T.CODE, A.NAME AS OLDNAME, T.NAME AS NEWNAME, " & _
         | 
| 68 68 | 
             
                       "IIf(A.CODE IS NULL,'新規','更新') AS TYPE " & _
         | 
| 69 69 | 
             
                       "FROM [TempSheet$] AS T LEFT JOIN [シートA$B3:F] AS A " & _
         | 
2
追記
    
        answer	
    CHANGED
    
    | @@ -27,5 +27,50 @@ | |
| 27 27 |  | 
| 28 28 | 
             
            追記
         | 
| 29 29 | 
             
            ---
         | 
| 30 | 
            -
            CSVファイルは、画像でなくて、データをそのままコピーして貼り付けてください。
         | 
| 30 | 
            +
            CSVファイルは、画像でなくて、テキストデータをそのままコピーして貼り付けてください。
         | 
| 31 | 
            -
            回答者がサンプルデータを手入力する手間が省けます。
         | 
| 31 | 
            +
            回答者がサンプルデータを手入力する手間が省けます。
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            ---
         | 
| 34 | 
            +
            列を結合したり、それで並べ替えたりという操作があるので、
         | 
| 35 | 
            +
            私なら、ADOを使って取り込みますね。
         | 
| 36 | 
            +
            SQLで簡単にデータを加工して、それをシートに貼り付けることができますので。
         | 
| 37 | 
            +
            下記を参考にしてください。
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            [ADOを使って、CSVファイルを読み込む - VBA - TIL](https://tmg0525.hatenadiary.jp/entry/2018/04/24/113155)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            下記のようなSQLを実行して、
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            ```sql
         | 
| 44 | 
            +
                sSql = "SELECT CODE1 & CODE2 & CODE3 AS CODE, NAME, FLAG1, FLAG2, FLAG3 " & _
         | 
| 45 | 
            +
                       "FROM [tera169663.csv] ORDER BY 1"
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            ```
         | 
| 48 | 
            +
            取得したレコードセットを CopyFromRecordset で作業用シート([TempSheet])に貼り付けます。
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            シート上のデータもADOでテーブルとして扱えますので、SQLで取得、加工できます。
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            [Excelファイルに接続(ADO) | ExcelWork.info](https://excelwork.info/excel/excelado/)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            シートA と 作業用シート(取り込んだCSVデータ) の不一致データをSQLで抽出して、それをシートAに追記します。
         | 
| 55 | 
            +
            不一致データの取得は下記のようなSQLです(いわゆる不一致クエリというものです)。
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            ```sql
         | 
| 58 | 
            +
                sSql = "SELECT T.CODE, T.NAME, T.FLAG1, T.FLAG2, T.FLAG3 " & _
         | 
| 59 | 
            +
                       "FROM [TempSheet$] AS T LEFT JOIN [シートA$B3:F] AS A " & _
         | 
| 60 | 
            +
                       "ON T.CODE = A.CODE " & _
         | 
| 61 | 
            +
                       "WHERE A.CODE IS NULL;"
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ```
         | 
| 64 | 
            +
            シートBに出力するデータは下記のSQL文になります。
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            ```sql
         | 
| 67 | 
            +
                sSql = "SELECT T.CODE, A.NAME AS OLDNAME, T.NAME AS NEWNAME, " & _
         | 
| 68 | 
            +
                       "IIf(A.CODE IS NULL,'新規','更新') AS TYPE " & _
         | 
| 69 | 
            +
                       "FROM [TempSheet$] AS T LEFT JOIN [シートA$B3:F] AS A " & _
         | 
| 70 | 
            +
                       "ON T.CODE = A.CODE;"
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            ```
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            シート全体のデータを取り込む場合は、[TempSheet$] というように シート名$ とします。
         | 
| 75 | 
            +
            範囲を指定する場合は、[シートA$B3:F] というように$のあとに範囲を指定します。
         | 
| 76 | 
            +
            [シートA$B3:F] というのは、シートA の B列からF列の3行目からデータの最後の行まで読み込みます。
         | 
1
追記
    
        answer	
    CHANGED
    
    | @@ -23,4 +23,9 @@ | |
| 23 23 | 
             
            シートAに同じCODEがあった場合は、そのNAMEをOLDNAME列に出力
         | 
| 24 24 | 
             
            TYPE列は、シートAに同じCODEがある場合は「更新」、ない場合は「新規」
         | 
| 25 25 |  | 
| 26 | 
            -
            以上であってますか。異なる部分があればご指摘ください。
         | 
| 26 | 
            +
            以上であってますか。異なる部分があればご指摘ください。
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            追記
         | 
| 29 | 
            +
            ---
         | 
| 30 | 
            +
            CSVファイルは、画像でなくて、データをそのままコピーして貼り付けてください。
         | 
| 31 | 
            +
            回答者がサンプルデータを手入力する手間が省けます。
         | 
