如何自动阅读Excel单元格,并跳过重复?
我正在处理这个Excel报告。 如果没有在这里附上一个例子,有点难以解释。 所以,我会尝试把它放在手动…让我们称之为工作表A:
ENV SYSTEM ACTION CRQ -------------------------------- PROD RAC2 PATCH 12345 DEV te2ds STAGE 34672 DEV te2ds PATCH 34294 PROD PRAC5 STAGE 47382 PROD hq2/DBNAME PATCH 47389 etc....
这只是我拥有的Excel表格的一小部分。 还有另一个工作表X:
SYSTEM DBNumber -------------------- RAC2 30 te2ds 10 PRAC5 12 hq2 3 etc...
所以,我想要完成的是,我想要某种代码(最好是,excel公式…我怀疑在这种情况下有多大帮助)自动'进去 – >从工作表A,系统读取单元从工作表X中find这个名字 – 将DBNumber下的相对数字放到新的工作表(或者我指定的工作表)旁边的一个单元格中,放在其右侧的SYSTEM名字旁边。 – >如果系统名称/号码已被复制,则跳过该单元。 是否有意义? 感谢所有的投入! 我真的需要一些帮助。 🙂
以下应该为你工作:
- 首先查看工作表A中“系统”列的列表
- 创build一个唯一的系统名称的数组
- 查找Sheet x中的值
- 复制Sheet z中的相对值
您可以使用下面的代码:
Sub unique() Dim systemNameCollection As New Collection Dim systemNames() As Variant Dim i As Long Dim rRng As Range 'Define the range and assign Values to Array ThisWorkbook.Sheets("Sheet1").Select Set rRng = ThisWorkbook.Sheets("Sheet1").Range("A2", Range("A65536").End(xlUp)) systemNames() = rRng.Value On Error Resume Next 'Add values in Collection For Each a In systemNames systemNameCollection.Add a, a Next 'run following code to take the unique value from Sheet1 - Lookup for value in Sheet2 'and copy relative number in sheet2 to sheet3 ThisWorkbook.Sheets("Sheet2").Select Set rRng = Range("A2", Range("A65536").End(xlUp)) ThisWorkbook.Sheets("Sheet3").Select For i = 1 To systemNameCollection.Count For Each Value In rRng If systemNameCollection(i) = Value Then Range("A65536").End(xlUp).Select ActiveCell.Offset(1, 0).Value = systemNameCollection(i) ActiveCell.Offset(1, 1).Value = Value(1, 2) Exit For End If Next Next End Sub
由于您需要数字的唯一系统名称在SheetX中,所以这是限制因素。 您可以将整个系统列从SheetX复制到一个新的工作表,然后使用VLOOKUP函数结合IF语句来获取相应的数字。
例:
- 复制SheetX,系统列并粘贴到新的SheetY
- 在“系统”列的右侧,添加另一个名为“数字”的列。
- 使SheetY中的信息表(假定在此示例中是Table1)。
- 对于SheetY,Number列中的每个单元格,插入公式:
= IF(ISNA(VLOOKUP(表1 [系统],希达$ B,1,FALSE)), “”,VLOOKUP(表1 [系统],SheetX $ A:!$ B,2,假))
这个公式说…
- 首先看看SheetY中的系统值是否在SheetA的列表中。
- 如果不是,那么“跳过”该单元格。
- 如果是,则从SheetX中find相应的编号。
最后一步:如果您担心在SheetY中有重复的键值对,请执行步骤1-4,然后对SheetY中的数据执行“删除重复项”。