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ファイルを開かずに文字を検...
-
【C&C++】指定行のみファイル書...
-
VBAにてEXCEL以外のファイル(テ...
-
バッチで118項目のCSVを処理し...
-
VB6でのファイル作成方法
-
C言語 コンパイルエラー LNK1136
-
C言語のfopenについて教えてく...
-
C#で、フォームのタイトル名を...
-
ファイルの結合
-
テキストファイルの最終行を削...
-
Wordファイルの結合
-
2つのファイルを比較するC言語...
-
hostsファイルの登録MAX数
-
ファイルからサイズ不明の行デ...
-
ASP .NETでファイル選択ダイア...
-
FileOpen 関数で既にファイル...
-
オートキャドでCSVファイルを変...
-
iniファイルについて
-
クリップボードから任意のファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
CSVファイルへの保存の際、デー...
-
ファイルを記録してあるセクタ...
-
テキストファイルの最終行を削...
-
SGファイルって何ですか?
-
ドラッグアンドドロップでファ...
-
分割コンパイルの#defineについて
-
fopenできる上限の変更
-
VBに、Cのincludeのようなもの...
-
グローバル変数のよくない使い...
-
ファイルの結合
-
大きいサイズのテキストファイ...
-
iniファイルに追記がしたいです。
-
バッチで118項目のCSVを処理し...
-
ハッシュの計算時間について
-
C言語のfopenについて教えてく...
-
Javascript で INI の読み書き
-
Excelマクロでの再読込み方法
おすすめ情報