画像の下のエクセルファイル(CSVと記載がありますがエクセルです)のデータを上の転記ファイルに転記させるマクロを作りました。赤の矢印のところに転記させるようにしています。
転記ファイルの黄色部の図番、品名、内製価格のデータは下のエクセルファイルにはありません。
この3つは現在、前回のデータをコピペしています。
例えば上の転記ファイルは下のエクセルファイルのデータを転記させた状態で、この時点では黄色部の部分は空白の状態です。
転記ファイルのC列のオ-ダ-NO. AA0000 D列のB00 E列の080 F列の枝番04-00
画像にはありませんが、もっと上のほうに枝番03-00という1個前のデータがあるので、03-00の時のデータをコピーして貼り付けをしています。この作業がなかなか大変なのでこちらも前のデータのものを拾って転記できないかと考えています。
考えているのが、AA0000 B00 080という番号を図番のAA0000B000801Bとマッチさせて転記できないかと。
画像のファイルだと次にAA0000 B00 080がきた場合枝番は06-00となりますが、図番、品名、内製価格の3つは前回の枝番のものと同じにしたいのです。
ややこしいのですが、枝番は数字だけではなくアルファベットの時もあります。AD-00など。その場合前回の枝番はAC-00。このように下へとどんどんデータが追加されていきます。
どういうやり方がよいのかは分かりませんが、自分で考えてみたコードだとうまくいきません。コードを貼り付けるので、いい方法があれば教えて頂きたいです。
図番、品名、内製価格のところのコードです。
分かりやすいように少し間隔を開けています。
ちなみに図番、品名、内製価格以外の転記はできています。
Sub 転記()
Dim wb As Workbook
Dim sh As Worksheet
Dim fname As String
Dim tbl As Variant
Dim r1 As Long, r2 As Long
Dim i As Long
Application.ScreenUpdating = False
Set sh = ActiveSheet
With sh
r1 = .Cells(Rows.Count, 2).End(xlUp).Row
tbl = .Range("C3:K" & r1)
End With
fname = ThisWorkbook.Path & "\" & "注文.xlsx"
Set wb = Workbooks.Open(fname)
With wb.Worksheets(1)
For r2 = 27 To .Cells(Rows.Count, 1).End(xlUp).Row
r1 = r1 + 1
sh.Cells(r1, 2).Value = .Cells(r2, 8).Value '注番転記
sh.Cells(r1, 3).Value = .Cells(r2, 9).Value 'オ-ダ-NO.転記
sh.Cells(r1, 4).Value = .Cells(r2, 10).Value '部門転記
sh.Range(sh.Cells(r1, 5), sh.Cells(r1, 6)).NumberFormatLocal = "@"
sh.Cells(r1, 5).Value = Format(.Cells(r2, 11).Value, "000") '製番転記
sh.Cells(r1, 6).Value = Format(.Cells(r2, 12).Value, "00") & "-" & Format(.Cells(r2, 13).Value, "00") '枝番転記
sh.Cells(r1, 9).Value = .Cells(r2, 17).Value '数量転記
sh.Range(sh.Cells(r1, 10), sh.Cells(r1, 11)).NumberFormatLocal = "#,##0"
sh.Cells(r1, 10).Value = .Cells(r2, 16).Value '単価転記
sh.Cells(r1, 17).Value = .Cells(r2, 7).Value '発注日転記
sh.Cells(r1, 18).Value = .Cells(r2, 20).Value '納期転記
'図番,品名,内製価格
For i = 1 To UBound(tbl)
If .Cells(r2, 9).Value = tbl(i, 1) And .Cells(r2, 10).Value = tbl(i, 2) _
And .Cells(r2, 11).Value = tbl(i, 3) Then
sh.Cells(r1, 7).Value = tbl(i, 5)
sh.Cells(r1, 8).Value = tbl(i, 6)
sh.Cells(r1, 11).Value = tbl(i, 9)
Exit For
End If
Next i
'メーカー
Select Case .Cells(r2, 5).Value
Case "CHUAN YAO MACHINERY CO.,LTD"
sh.Cells(r1, 16).Value = "全曜機械"
Case "ZEN MACHINERY CO.,LTD"
sh.Cells(r1, 16).Value = "大成ハイテック"
Case "MANUFACTURING(THAILAND)"
sh.Cells(r1, 16).Value = "HMT"
End Select
Next r2
End With
With sh
End With
Range("A1:A2000").EntireRow.Delete
wb.Save
wb.Close
'wb.Close
'Kill fname
Application.ScreenUpdating = True
End Sub
どなたか知恵えを貸して下さい。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>マクロを実行すると0のものを拾っていますので、必ず1個前に記入したものを拾うようにして頂きたいです。
1個前は必ずBになっています。「既存のオーダー、部門、製番が一致する行で、最も下の行が取得対象となる」と理解しました。
現在、上から下へ検索をしていますが、これを下から上に検索するようにすれば良いです。
以下のようになります。
'図番,品名,内製価格
For i = UBound(tbl) To 1 Step -1
If .Cells(r2, 9).Value = tbl(i, 1) And .Cells(r2, 10).Value = tbl(i, 2) _
And .Cells(r2, 11).Value = CLng(tbl(i, 3)) Then
sh.Cells(r1, 7).Value = tbl(i, 5)
sh.Cells(r1, 8).Value = tbl(i, 6)
sh.Cells(r1, 11).Value = tbl(i, 9)
Exit For
End If
Next i
No.1
- 回答日時:
If .Cells(r2, 9).Value = tbl(i, 1) And .Cells(r2, 10).Value = tbl(i, 2) _
And .Cells(r2, 11).Value = tbl(i, 3) Then
の箇所ですが、下の行を
And .Cells(r2, 11).Value = CLng(tbl(i, 3)) Then
に変えてください。
比較の時、左辺が数値で右辺が文字になっています。
(35と"035"を比較しているイメージです。)
右辺を一旦、数値に変換してから比較します。
(製番は必ず数字である前提で書いてます)
回答ありがとうございます。
図番についてですが、説明不足で申し訳ないのですが、例えば3行目のAA0000B000801Bは最後のBが図番変更の回数となっています。
なので、1個前はA、その前は0になります。
マクロを実行すると0のものを拾っていますので、必ず1個前に記入したものを拾うようにして頂きたいです。1個前は必ずBになっています。
それと内製価格は転記されるものとされないものがあります。
考えられる理由として、1個前に記入されているものにコメントがあるのと、数字の色が赤になっている場合です。
1個前にコメントがないものと数字の色が赤になっていないものは転記されていますので、おそらくこれが原因ではないかと思います。
転記した場合にコメントや数字を赤くする必要はありません。
その時の図番によって、内製価格も違う場合があるので、必ず1個前の価格を拾うようにして頂きたいです。
品名は完璧です。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
引数に数値、文字列の混在
Visual Basic(VBA)
-
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
-
4
エクセルvbaについて
Visual Basic(VBA)
-
5
エクセルVBAでデータ転記
Visual Basic(VBA)
-
6
VBA
Visual Basic(VBA)
-
7
10行目にフィルターを使用して見出しがあります。列はA:DFで11行目以降(2000行ぐらい)はデー
Visual Basic(VBA)
-
8
Excel VBA 文字列のセルを反映させたいです
Visual Basic(VBA)
-
9
VBAコードについて
Visual Basic(VBA)
-
10
マクロのエラー
Visual Basic(VBA)
-
11
エクセルの「パスの定義」の仕方について教えてください
Excel(エクセル)
-
12
【VBA】カーソルのある行の1行目のセルをコピペし,最後にそのセルに戻る方法
Visual Basic(VBA)
-
13
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
14
近似した文字列を置換するエクセル関数またはVBAについて
Visual Basic(VBA)
-
15
Excel VBAで値を変えながら、pdf出力したい
Visual Basic(VBA)
-
16
Excel VBA マクロ あるフォルダー内の複数のファイルを統合したいです
Visual Basic(VBA)
-
17
ExcelでA列をコピーしたいのですがコピー範囲内に空白セルがあるとそこで終わってしまいます。 全て
Excel(エクセル)
-
18
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
19
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
-
20
マクロについて質問です。 セルの内容をクリアするコマンドボタン(AX) を作成しました。 指定範囲が
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
特定のエクセルファイルを起動...
-
VBAでCSVファイルが使用中かど...
-
AccessVBAで作成したExcelファ...
-
(Excelマクロ)datファイルをエ...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
Accessのエラー対処法
-
月が変わったら自動でシートが...
-
テキスト内容の削除方法
-
access関数を説明できる方いま...
-
ファイルの先頭に追加書込みす...
-
XMLデータを変換し印刷する方法
-
Batch: フォルダ内の特定のファ...
-
要求書を書く
-
ファイルの途中に文字列を挿入
-
1つのExcelファイルから複数作...
-
ExcelVBAでの標準偏差の求め方
-
amifldrv64.sysについて教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
特定のエクセルファイルを起動...
-
VBAでCSVファイルが使用中かど...
-
Batch: フォルダ内の特定のファ...
-
AccessVBAで作成したExcelファ...
-
月が変わったら自動でシートが...
-
excelを共有ファイルにすると行...
-
(Excelマクロ)datファイルをエ...
-
Access VBA を利用して、フォル...
-
【アクセス】「ほかのユーザー...
-
Excel VBA 処理後データが重た...
-
tmpファイル なぜできる?削除...
-
社内Excel共有ブックでの保存ト...
-
mdbファイル フォームを開くと...
-
Access2007でldbファイルが...
-
Dream weaverで、誤ってファイ...
-
XMLデータを変換し印刷する方法
-
大量のCSVデータを行列の変換を...
-
ファイルの途中に文字列を挿入
おすすめ情報