Excelにて、シート間で、データーを比較して、一致したら一致シートへ転記し一致しないものは一致しないシートヘ転記するするコードを教えてください。
詳細
Excelにて、シート間で、データーを比較して、一致したら一致シートへ転記し一致しないものは一致しないシートヘ転記するVBAコード作ってみたのですが、うまくいきません。
どなたか、お分かりになる方、ご教授願います。
'検索値があるシート(バーコード)'対象データがあるシート(sheet1)
'一致結果を出力するシート(マッチングデーター)、一致しない結果を出力するシート(マッチング外データー)となっています。
VBAコード作ってみたのですが、うまくいきません。
<不具合点>
①データーを比較してくれない
⇒検索値があるシート(バーコード)のデーター(B列)と対象データがあるシート(sheet1)
の列データー(E列)を比較してマッチングデーターシートヘ転記してくれない。
それぞれの列のデーターは、その都度増減します。
②一致しない結果を出力するシート(マッチング外データー)へ転記しない。
その他
⇒検索値があるシート(バーコード)のデーターは、バーコードリーダーを使いバーコードを読み取り、
A列に読み取り値があります、その値をB列で、比較に下4桁を使用するので、下4桁を取り出しています。
して、対象データがあるシート(sheet1)のデーターと比較しています。
B列には、=IFERROR( VALUE(RIGHT(A2,4)),"")で、4桁を取り出しています。
◇検索値があるシート(バーコード)
A B C D
1 バーコード 連番
※連番のデーターで比較
◇データーと対象データがあるシート(sheet1)
A B C D E・・・ Yまで
1 発行元 発行元名 生産計画情報 発行情報 連番 次工程
※連番のデーターで比較
※画像左が、バーコードシート、画像右がsheet1です。
画像参照願います。
おもうようにいかず困っております。
説明がうまくなくて、すみませんが、よろしくお願いします。
Sub Sample3()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim sh As Worksheet
Dim i As Long, j As Long
Application.ScreenUpdating = False
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("バーコード")
With sh1
For i = 2 To .Cells(Rows.Count, "E").End(xlUp).Row
If .Range("E" & i).Value = sh2.Range("B" & i).Value Then
Set sh = Worksheets("マッチングデーター")
Else
Set sh = Worksheets("マッチング外データー")
End If
j = sh.Cells(Rows.Count, "E").End(xlUp).Row + 1
.Range("A" & i & ":S" & i).copy Destination:=sh.Range("A" & j)
Next i
End With
Application.ScreenUpdating = True
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
内容がよくわからなかったので、勝手に想定しました。
『データシートの各行のデータ(A:S列)をE列の値によって振り分けてコピーしたい』
振り分けの条件は、「バーコード一シート」のB列の一覧に乗っているか否かで、記載があれば「マッチシート」へ、一覧に記載が無ければ「非マッチシート」へ。
というものと仮定しました。
各シートの1行目はタイトル行と仮定。
方法としては、
「関数で仕分けして、その結果をオートフィルタでフィルタしてコピペ」
という手順です。
Sub Sample()
Dim absent, presnt, bar, sh1
Dim data As Range, f As String, tmpC As Long
'--- シート変数セット
Set bar = Worksheets("バーコード") ' バーコードシート
Set sh1 = Worksheets("Sheet1") ' データシート
Set presnt = Worksheets("マッチングデーター") ' マッチデータのシート
Set absent = Worksheets("マッチング外データー") ' 非マッチデータのシート
tmpC = WorksheetFunction.Min(sh1.UsedRange.Columns.Count + 1, Columns.Count)
'--- データ仕分け(抽出)
Set data = sh1.Cells(2, 1).Resize(sh1.Cells(Rows.Count, 5).End(xlUp).Row - 1, tmpC)
f = bar.Cells(2, 2).Resize(bar.Cells(Rows.Count, 2).End(xlUp).Row - 1, 1).Address()
f = "=IF(E2="""","""",(COUNTIF(" & bar.Name & "!" & f & ",E2)>0)*1)"
sh1.Cells(2, tmpC).Resize(data.Rows.Count).FormulaLocal = f
'--- データコピー
Set data = data.Offset(-1).Resize(data.Rows.Count + 1)
data.AutoFilter
data.AutoFilter Field:=tmpC, Criteria1:=0
data.Columns("A:S").Copy Destination:=absent.Cells(1, 1)
data.AutoFilter
data.AutoFilter Field:=tmpC, Criteria1:=1
data.Columns("A:S").Copy Destination:=presnt.Cells(1, 1)
data.AutoFilter
sh1.Columns(tmpC).Clear
End Sub
※ コピペ先のシートへは1行目からペーストしていますが、最初にクリアする必要がある場合はクリアしてからコピペするようにしてください。
※ 既に記入されているデータがあって、その後ろに追加してゆく方式の場合は、Destinateionのセルを最終行+1に指定すればそのようになります。
※ セル値を単純にコピペしていますので、関数式が設定されている場合などに有効でなくなってしまうケースがあります。そのような場合には「値をペースト」にするのが効果的と思います。
対応して頂き誠にありがとうございました。
説明がうまくできない中、思い通りの結果となりましたこと
心から感謝いたします。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
-
4
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
5
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
6
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
7
excel2010 マクロで複数シート検索し、一致した行をコピーしたい
Excel(エクセル)
-
8
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
9
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
10
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
11
ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?
Excel(エクセル)
-
12
VBAで条件に一致するセルの隣の値をまとめる方法
Excel(エクセル)
-
13
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
14
完全一致したら代入するマクロを教えてください
Excel(エクセル)
-
15
エクセルのマクロで条件一致のデータを別シート(複数)に転記したい
Visual Basic(VBA)
-
16
VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください
Excel(エクセル)
-
17
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームに入力したデ...
-
特定の文字を含むシートだけマ...
-
【Excel VBA】Worksheets().Act...
-
原本シート複写してリストの氏...
-
userFormに貼り付けたLabelを変...
-
トグルボタン一部を一度にON OF...
-
Vba UserformからExcelシートの...
-
EXCEL(VBA)でシート保護がかか...
-
エクセルで通し番号を入れてチ...
-
VBA オートフィルター繰り返し
-
一時的にファイル名、シート名...
-
Excel VBA 複数行を数の分だけ...
-
ListViewの画面の更新
-
C#でExcelのシートを選択する方法
-
コンボボックスとオートフィル...
-
VBA 検索して一致したセル...
-
翌日にお休み予定の従業員がい...
-
VBAです。ユーザーフォームの表...
-
Excelにて、シート間で、データ...
-
コマンドボタンをクリックでシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
excelのマクロで該当処理できな...
-
Excelマクロのエラーを解決した...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
VBA 存在しないシートを選...
-
シートが保護されている状態で...
-
同じ作業を複数のシートに実行...
-
VBAで指定シート以外の選択
-
Excel VBA リンク先をシート...
-
エクセル・マクロ シートの非...
-
実行時エラー1004「Select メソ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
エクセルVBA Ifでシート名が合...
-
userFormに貼り付けたLabelを変...
おすすめ情報