搜索范围Sheet1对Sheet2中的范围复制到Sheet3,具体取决于横向单元格中的值

时间:2016-05-13 20:20:21

标签: excel vba excel-vba

我搜索并发现了一些类似的帖子

Look for values from sheet A in sheet B, and then do function in corresponding sheet B cellFor each Loop Will Not Work Search for Value On one Sheet and Change Value on another Sheet

虽然这些都解决了我的目标的某些方面,但他们并不是这样。 我有3张,sheet1 - 3,我想在列A和B上的sheet1 - 2中搜索和匹配,如果找到匹配或在B列中找不到匹配A列中的值,则复制到sheet3。

这是我到目前为止使用Office 2016的原因。

Public Sub SeekFindCopyTo()

Dim lastRow1 As Long
Dim lastRow2 As Long
Dim tempVal As String

lastRow1 = Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Row
lastRow2 = Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Row

For sRow = 4 To lastRow1
    Debug.Print ("sRow is " & sRow)
    tempVal = Sheets("Sheet1").Cells(sRow, "B").Text

    For tRow = 4 To lastRow2
        Debug.Print ("tRow is " & tRow)
        TestVal = Sheets("Sheet2").Cells(tRow, "B")
        Operations = Sheets("Sheet2").Cells(tRow, "A")

        If Sheets("SAP_XMATTERS").Cells(tRow, "B") = tempVal Then
            Operations = Sheets("Sheet2").Cells(tRow, "A")
            Debug.Print ("If = True tempVal is " & tempVal)
            Debug.Print ("If = True TestVal is " & TestVal)
            Debug.Print ("If = True Operaitons is " & Operations)
            If Operations = "REMOVE" Then
                 Sheets("Sheet2").Range("A" & tRow).EntireRow.Copy
                 Sheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Insert xlcutcell
                 'Sheets("Sheet2").Rows(tRow).Delete
            Else
                 'Sheets("Sheet2").Rows(tRow).Delete
            End If
        End If
    Next tRow
Next sRow
End Sub

代码运作良好,但问题是我正在寻找表格1和2之间的B:B中的匹配如果匹配我想要检查A:A中的相邻单元格,如果它是REMOVE则返回字符串REMOVE将整行复制到sheet3。如果在B:B和Sheets 2& 2之间没有匹配,我也想知道这个问题。如果是,则在相邻单元格中使用字符串PROCESS 1,将整行复制到sheet3。我可以在单独的潜艇中做任何一个选项,但不能让它在一次通过中起作用。

即使按照“你不能这样做”的方式,你的帮助也会受到赞赏; - )

TIA

鲍勃

1 个答案:

答案 0 :(得分:0)

使用.Find进行完全重写就可以了。

std::map<t_ReaderID, shared_ptr<IReader>> DerivedFactory::GetReaders()
{
    int numDevices = 0, numReaders = 0;
    numDevices = Derived_DiscoverDevices(&devices);
    numReaders = Derived_DiscoverReaders(devices, numDevices, &readers);

    for (int i = 0; i < numReaders; ++i)
    {
        t_ReaderID ID = reinterpret_cast<char *>(readers[i]->id->id);

        shared_ptr<DerivedReader> o_Reader(new DerivedReader(readers[i]));

        m_readers.insert(std::make_pair (ID, o_Reader));
        std::cout << ID << std::endl;
    }

    areReadersOpen = true;

    return m_readers;
}