【发布时间】:2017-11-30 15:46:20
【问题描述】:
我有两张 Sheets,sheet1 和 sheet2。
我在 sheet1 中有 17 列,在 sheet2 中有 14 列。
我在 sheet1 的 L 列中有 ID(ID 以 D2B 和 4 开头)。一个 ID 的长度为 11 到 13 位,而另一个 ID 的长度为 8 位。最后,我只需要 D2B 的 ID。
在表格 2 的 L 列中,我的 ID 仅以 4 开头。它是 8digit Long。另外,我有仅包含 D2B 的 A 列。
我正在比较表 1 和表 2 中的列 (L)。如果 Id 存在于 sheet1 中,则我将结果复制到 sheet2 的 M 列。因为,我只需要 D2B 的 ID,我检查表 2 的 L 和 M 列是否匹配,如果它们匹配,则我从 N 列的表 2 的 A 列复制相应的 ID d2B。
到此为止,我已经完成了编码。
现在,我想查看以 ID 4 开头的 sheet 1,发现它在 sheet2 中有对应的 D2C Id,则应将其复制到 sheet1 的 M 列,如果找不到,则sheet1 的 L 列 ID 必须复制到 M 列中。谁能指导我,我该怎么做
下面是代码,我用于检查 sheet1 中的值并粘贴到 sheet2 中。
Sub lookuppro()
Dim totalrows As Long
Dim Totalcolumns As Long
Dim rng As range
totalrows = ActiveSheet.UsedRange.Rows.Count
Sheets("Sheet2").Select
For i = 1 To totalrows
Set rng = Sheets("Sheet1").UsedRange.Find(Cells(i, 12).Value)
'If it is found put its value on the destination sheet
If Not rng Is Nothing Then
Cells(i, 13).Value = rng.Value
End If
Next
End Sub
以下是代码,我用于检查它们是否匹配并将相应的 D2C 编号粘贴到 sheet2 中。
Sub match()
Dim i As Long
Dim lngLastRow As Long
Dim ws As Worksheet
lngLastRow = range("A1").SpecialCells(xlCellTypeLastCell).Row
Set ws = Sheets("Sheet2")
With ws
For i = 1 To lngLastRow
If .Cells(i, 12).Value = .Cells(i, 13).Value Then
.Cells(i, 14).Value = .Cells(i, 1).Value
Else
'nothing
End If
Next i
End With
End Sub
【问题讨论】:
-
看看这个:stackoverflow.com/questions/10714251/… 并避免使用 Select。所以你可以使用 Dim sht1, sht2 As Worksheet 在你的代码 Set sht1 = ThisWorkbook.Worksheets("Sheet1")
-
您可以检查第一个字符或前 3 个字符stackoverflow.com/questions/34713100/… 并使用 For 公式搜索每一行,提取 ID 字符串的其余部分
-
@danieltakeshi 使用 left 我正在寻找第一个字符,如何将相应的值从 sheet2 替换为 sheet1?抱歉,我是 VBA 新手,这就是为什么?
-
@danieltakeshi 你能给我一个测试代码吗?可能是 ?我可以使用它