查看列A,与列E匹配,将列B复制到列F.

所以我相信,如果你知道VBA的方式,这很容易,我只是能够为我工作。

这是我所拥有的表格的一个例子。 如果列A相同,我想将所有内容都移动到一行中。 这是表,我也期待着。

ABCDEFGHI 11 Yes Yellow 8/1/2013 20:46 11 Yes 8/1/2013 20:46 Yellow 8/1/2013 20:46 11 No Blue 8/1/2013 20:46 12 Yes 8/1/2013 20:46 Yellow 8/1/2013 20:46 11 YY Red 8/1/2013 20:46 13 Yes 8/1/2013 20:46 Red 8/1/2013 20:46 11 NN Yellow 8/1/2013 20:46 11 YYY Yellow 8/1/2013 20:46 11 NNN Blue 8/1/2013 20:46 11 YYYYY Red 8/1/2013 20:46 11 NNNN Yellow 8/1/2013 20:46 12 Yes Yellow 8/1/2013 20:46 12 No Blue 8/1/2013 20:46 12 YY Red 8/1/2013 20:46 12 NN Yellow 8/1/2013 20:46 12 YYY Yellow 8/1/2013 20:46 12 NNN Blue 8/1/2013 20:46 13 Yes Red 8/1/2013 20:46 13 No Yellow 8/1/2013 20:46 13 YY Yellow 8/1/2013 20:46 13 NN Blue 8/1/2013 20:46 13 YYY Red 8/1/2013 20:46 13 NNN Yellow 8/1/2013 20:46 

这正是我想用VBA做的事情。 不是最好的,但我正在尝试。

 Sub Sample() Dim lastRow As Long, i As Long Dim ws As Worksheet Set ws = Sheets("Sheet1") lastRow = ws.range("A" & Rows.Count).End(xlDown).Row With ws For i = 1 To lastRow If range("A" & i).Value = range("E" & i) Then range("f" & i).Value = range("b" & i).Value Next i End With End Sub 

有人可以帮助我完成这个需要的VBA。 我有问题循环来循环和比较每个A值与E中的每个值

我不太确定你想达到什么目的。 但是我根据自己的理解编写了一个代码。 试试吧。

 Sub Sample() Dim lastRowA As Long, lastRowB As Long, i As Long Dim ws As Worksheet Set ws = Sheets("Sheet1") With ws lastRowA = .Cells(.Rows.Count, 1).End(xlUp).Row lastRowE = .Cells(.Rows.Count, 5).End(xlUp).Row End With With ws For i = 1 To lastRowE CurrentEValue = Range("E" & i).Value MatchFound = False For j = 1 To lastRowA CurrentAValue = Range("A" & j).Value If CurrentAValue = CurrentEValue And Not MatchFound Then Range("f" & i).Value = Range("b" & j).Value MatchFound = True End If Next Next End With End Sub 

所以你想把第1到第8行的列B到D的数据放到第1行,第F列和后面,因为对于第1行到第8行,A列中的“11”与E1中的“11”匹配?
例如B1-> F1,C1-> H1(这是我错过某个顺序的第一个位置),D1-> G1,?? – > I1(来自列I的内容来自哪里?),
(在同一个目标行中附加下一个源代码行:) B2-> J1,…

首先你需要弄清F到I(和更远)的数据来自哪里。
然后:
如果我对你的意图的假设是正确的,那么这就提出了其他问题:

  • 列E总是包含列A的所有可能的值,列A中是否存在缺失列的值(例如'14')?
  • 列E中值的位置是否固定?

以下是一些build议,代码可能在澄清之后遵循:

  • 确定列A中的行数
  • 确定列E中的行数
  • 使用2个循环:一个外部循环用于从列A中获取数据,另一个用于内部循环以search列E中的数据
  • 使用ws.cells(row,col).value而不是range()
  • 如果要在同一个目标行中追加来自不同源代码行的数据,请添加一个数组variables,以保留每个目标行的下一个空列的位置。

一般build议:

  • 不要使用像“我”这样的variables名称。 不清楚的variables名称会带来许多缺点。 使用iRow或类似的东西(易于处理search和replace,独特的meaining,有关variablestypes(i =整数)的信息,…)
  • 在模块的顶部使用Option Explicit。 这将迫使你明确地声明所有的variables,并确保variables的正确使用。