簡體   English   中英

滿足條件時,Excel VBA 從一張紙到另一張紙的復制粘貼循環

[英]Excel VBA copy paste loop from one sheet to another when condition is met

我是 VBA 的初學者。 我已經檢查過這個問題是否已經被問到,但沒有發現任何完美契合的問題,而且我也未能正確修改我找到的最接近的代碼。

我有一個包含原始銷售數據(大約 5,000 個項目)的文件位於 sheet1 列 A 中。在 sheet2 中,我有一個表,其中列 A 中有大約 500 個數據,其中已經消除了 sheet1 中的重復項目。 500 項中的每一項都在 B 列中重新命名。

我想創建一個循環來檢查 sheet1 列 A 中的每個單元格,如果數據與 sheet2 列 A 中的數據之一相同。當條件滿足時,它然后將 sheet2 中的 B 列中的足夠單元格復制粘貼到sheet1 B 列(即同一行)中有足夠的單元格。 我需要對 500 個項目進行操作。

產品分類 1

巧克力
化妝品
巧克力
化妝品
化妝品
化妝品
化妝品
巧克力
巧克力
化妝品
化妝品
果醬化妝品
化妝品

  • 示例 Sheet2(參見鏈接: https ://1drv.ms/i/s!AiRwDFaSvBNalTQlKgDKEJTNLvOU)

產品

巧克力cosme果醬

其中指的是列 Sorting2 :

CHO COS 果醬

  • 到目前為止編寫的代碼

    Sub sorting() Dim Cell As Range Dim i As Integer For Each Cell In Sheet1.Range("A2:A10000) If Cell.Value = Sheet2.Range("A2") Then Sheets("Sheet2").Select Range("A2").Select Selection.copy Sheets("Sheet1").Select Cell(i,2).Select Cell.PasteSpecial End If Next Cell End Sub

這聽起來像您只需要在 sheet1 列 b 中使用 vlookup 公式

類似於單元格 B2 sheet1 中的內容

=Vlookup(A2,sheet2!'A1:B500,2,0)

然后將其一直復制粘貼到 b 列

看着你的代碼,你沒有將變量 i 設置為任何東西,看起來你需要在 if 之前添加i=i+1

我還會刪除您的選擇和選擇,因為如果您單擊鼠標,這可能會導致錯誤。 您只需要

Sheets("sheet2").Range("A2"). copy

代替

    Sheets("sheet2").select
Range("A2").select
    Selection.copy

你也不應該復制 B2 因為 A2 是你匹配的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM