tatsumaru77様
昨日回答して頂いたものです。
すみませんが、昨日の質問で1つ補足があります。エクセルに回答納期を転記させて再度転記した場合に、回答納期が入力されている場合にはそのまま日付けが残るようにできないでしょうか?
簡単に言うと回答納期が入力されている場合には、なにも処理しないということです。
以下、昨日の質問です。
可能であれば教えて頂きたいです。
よろしくお願いします。
VBAについてです。
画像右側のCVSファイルのM列の回答納期を、左側ExcelファイルのK列に転記させたいです。
条件があり、エクセルファイル側のJ列の注文番号とCSVファイルのD列の注文番号がマッチした場合にのみ転記させたいです。
マクロの起動方法ですが、Excelファイルにマクロ起動ボタンをつくり、指定のCVSファイルを選択後転記させるという感じです。
現在は、ファイルを見比べながら手打ちで入力しています。
時間がかかるのと、入力ミスが多発するので、どなたか知恵を貸して頂きたいです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
修正しました。
前回のは破棄してください。Option Explicit
Public Sub 回答納期転記()
Dim myFile As Variant
Dim ans As Integer
Dim dicT As Object
Dim wb As Workbook
Dim ws As Worksheet
Dim ms As Worksheet
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim key As String
Set ms = Worksheets("データリスト")
myFile = Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
If myFile = False Then Exit Sub
Set wb = Workbooks.Open(myFile)
ans = MsgBox(myFile & "を読み込みました。" & vbLf & "このファイルを処理しますか", vbOKCancel)
If ans <> vbOK Then Exit Sub
Set ws = wb.Worksheets(1)
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
maxrow1 = ws.Cells(Rows.count, "D").End(xlUp).Row 'D列の最大行取得
maxrow2 = ms.Cells(Rows.count, "J").End(xlUp).Row 'J列の最大行取得
For row1 = 2 To maxrow1
key = ws.Cells(row1, "D").Value
dicT(key) = ws.Cells(row1, "M").Value
Next
For row2 = 2 To maxrow2
If ms.Cells(row2, "K").Value = "" Then
key = ms.Cells(row2, "J").Value
If key <> "" Then
If dicT.exists(key) = True Then
ms.Cells(row2, "K").Value = dicT(key)
Else
ms.Cells(row2, "K").Value = ""
End If
End If
End If
Next
wb.Close
MsgBox ("完了")
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- その他(プログラミング・Web制作) エクセルVBA 3 2022/06/11 16:01
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- その他(プログラミング・Web制作) エクセルVBA 18 2022/06/11 17:19
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイルの結合
-
グローバル変数のよくない使い...
-
ダイアログボックスで複数フォ...
-
ドラッグアンドドロップでファ...
-
フレームワークについて
-
プログラムについて。
-
CSVファイルへの保存の際、デー...
-
テキストファイルの最終行を削...
-
バッチで118項目のCSVを処理し...
-
HANDLE無効について
-
Android ファイルの書き込み
-
Javascript で INI の読み書き
-
マスタとファイルの違いって?
-
dataファイルをxtxファイルにす...
-
画像読み込み時のOutOfMemory
-
smarty上で、動的にファイルを...
-
ファイル名の先頭にアンダース...
-
【C#】リソースファイルの埋め...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
VBに、Cのincludeのようなもの...
-
CSVファイルへの保存の際、デー...
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
iniファイルに追記がしたいです。
-
ドラッグアンドドロップでファ...
-
SGファイルって何ですか?
-
同じ名前のファイルを作った場...
-
アドレス帳WABファイルをサンダ...
-
ダイアログボックスで複数フォ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報