循环遍历列中的每个单元格,将每个单元格与列表进行比较,然后将相关的描述input到相邻的单元格中

目标:遍历一列数字/代码,并将这些代码与它们的描述(在一个列表中)进行匹配,并在下一列中填充与相关描述相关的单元格。 例如:A2 = 123456,A3 = 885467,A4 = 954789等…读入第一个单元格A2(123456)。 在列表中find123456(123456 = Finance),在B2中放置“Finance”。 阅读885467(A3)。 在列表中find(885467 = Marketing),在B3中放置“Marketing”…等等。 我最近解决这个问题是:

Sub JobCodeDescription() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets 'There are 3 worksheets in this Workbook. 'Job Code 'Location Code 'Entity Code 'Dim x As Number Dim f As Range For Each f In ActiveSheet.UsedRange.Columns("F").Cells If f = "00053" Then ActiveCell.Offset(0, 1).Value = "Finance" ElseIf f = "00056" Then ActiveCell.Offset(0, 1).Value = "Marketing" ElseIf f = "00082" Then ActiveCell.Offset(0, 1).Value = "Technology" ' continues on... Next f ' This works but the Active Cell DOES NOT move with "f". So the same cell continues to be populated and overwritten. Next ws End Sub 

这些代码从来没有以任何特定的顺序来到我身边,会有重复,所以我试着按升序sorting。 这似乎有帮助,但我只是无法弄清楚通过作业代码循环,并循环通过列表中find匹配的代码描述。 我可能会把这一切都搞错了。 我只想将列A中的代码与平面文件进行比较,但我不知道如何去做。 “平面文件”只是一个.txt文件,它是作业代码及其说明的列表。 例如:123456 =财务。 任何帮助将不胜感激。

从你的描述来看,如果我理解正确,我认为你最好用Vlookup() ,因为它是一个内置函数,不需要macros。

如果您的数据表在J1:K4 ,并且您的帐户列表在A1:A4 ,则可以在B1使用以下公式,并将其复制下来:

=VLOOKUP(A1,$J$1:$K$4,2,FALSE)

这将在范围J1:J4searchA1的值,然后返回列K的匹配值:

在这里输入图像说明

但是,如果你想使用你的macros,@ThomasInzina是正确的,你需要使用f.Offset(...)而不是ActiveCell.Offset(...)