0

我有一个包含三个工作表的工作簿。我需要根据工作簿 A 上的列 A 和 C 以及工作表上的列 B 和 D 的条件(索引?),将工作簿 B 上的列 K(行)中的值更改为工作簿 A 中的列 CF(行)的值B. 也就是说,这些工作表具有不同顺序的数据,不能简单地循环和复制。我需要在工作表 A 中找到 CF(row) 的行号,其中工作表 A 和 C 列与工作表 AB 和 D 列相同。

伪SQL

UPDATE 
    Worksheet B
SET
    Worksheet B.K = Worksheet A.CF
FROM
    Worksheet A
WHERE
    Worksheet A.B = Worksheet B.B

从工作表 A 中选择,列 CF WHERE AA AND AC 等于工作表 BB 和 BD AND SET Worksheet BK(Row) to Value worksheetA.CF(row)

我的代码是查找在工作表 A 列 A 上找到具有匹配文本的 LAST 列,没有任何索引或映射。

Public Function FindPnum(keyword As Variant) As Variant
    Dim ws As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim tRow As Long
    Dim tCol As Integer

    Set ws = Sheets("Data")
    Set rng1 = ws.Cells.Find(keyword, ws.[b2], xlValues, , xlByRows, xlPrevious)
    Set rng2 = ws.Cells.Find(keyword, ws.[b2], xlValues, , xlByColumns, xlPrevious)

    If Not rng1 Is Nothing Then
        FindPnum = Cells(rng1.Row, rng2.Column).Address(0, 0)
    End If

End Function
4

1 回答 1

1

这里试试这个

Sub pair()
Dim r, r2, found
r = 8
r2 = 2
found = False
Application.ScreenUpdating = False
Sheets(2).Activate
Do Until Len(Cells(r, 2).Value) = 0
Do Until Len(Sheets(1).Cells(r2 + 1, 2).Value) = 0 Or found = True
    If Sheets(2).Cells(r, 2).Text = Sheets(1).Cells(r2, 2).Text Then
        If Sheets(2).Cells(r, 11).Value <> 0 Then
            Sheets(2).Cells(r, 11).Value = Sheets(1).Cells(r2, 84)
        End If
        found = True
    Else
        r2 = r2 + 1
    End If
Loop
r2 = 2
r = r + 1
found = False
Loop
Application.ScreenUpdating = True
End Sub

我认为应该这样做。

于 2012-08-31T21:43:29.467 回答