如何通过excel VBA返回符合设置条件的特定行

时间:2013-10-08 02:14:01

标签: excel excel-vba vba

我有这些数据,我正在跟踪连续多次出现的缺陷代码 连续缺陷代码是连续出现在同一区域和线下的代码 多个是在同一区域和线下出现3次或更多次(即使不是连续性)的缺陷代码。

Area    Line    Lot #           Date              Code  Description
Assy    Line1   LOT000000001    10/3/2013 13:31   5c    Vibration fail
Assy    Line12  LOT000000002    10/3/2013 13:25   5g    Key Malfunction
Labl    Line2   LOT000000003    10/3/2013 13:08   5a    No charge
Dice    Line1   LOT000000004    10/3/2013 13:03   5b    System Fail
Dice    Line2   LOT000000005    10/3/2013 13:09   3j    Sofwware fail
Dice    Line3   LOT000000006    10/3/2013 13:29   5d    No display
Circ    Line1   LOT000000007    10/3/2013 13:25   3n    Short
Circ    Line1   LOT000000008    10/3/2013 13:38   3n    Short
Circ    Line10  LOT000000009    10/3/2013 13:26   3n    Short
Circ    Line12  LOT000000010    10/3/2013 13:30   3n    Short
Circ    Line2   LOT000000011    10/3/2013 13:02   3n    Short
Circ    Line3   LOT000000012    10/3/2013 13:15   3n    Short
Circ    Line7   LOT000000013    10/3/2013 13:24   3n    Short
Circ    LineA   LOT000000014    10/3/2013 13:10   3o    Open
Circ    LineA   LOT000000015    10/3/2013 13:14   3n    Short
Circ    LineA   LOT000000016    10/3/2013 13:46   3c    High Res
Circ    LineA   LOT000000017    10/3/2013 13:47   3n    Short
Circ    LineA   LOT000000018    10/3/2013 13:50   3o    Open
Circ    LineA   LOT000000019    10/3/2013 13:51   3n    Short
Circ    LineA   LOT000000020    10/3/2013 13:55   3b    Low Res
OSTS    Line1   LOT000000021    10/3/2013 13:48   3b    Low Res
OSTS    Line1   LOT000000022    10/3/2013 13:50   3f    No Trace
OSTS    Line11  LOT000000023    10/3/2013 13:06   3a    No Signal
OSTS    Line2   LOT000000024    10/3/2013 13:24   3a    No Signal

在这种情况下,我的预期结果是:

Circ    Line1   LOT000000007    10/3/2013 13:25   3n    Short
Circ    Line1   LOT000000008    10/3/2013 13:38   3n    Short

连续发生。

和多次出现。

Circ    LineA   LOT000000015    10/3/2013 13:14   3n    Short
Circ    LineA   LOT000000017    10/3/2013 13:47   3n    Short
Circ    LineA   LOT000000019    10/3/2013 13:51   3n    Short

因此原始数据在Sheet1上,我希望在Sheet2中传输的结果具有相同的标题  我所做的是将原始数据传递给数组,然后迭代它  我没有得到我想要的东西。代码很长,所以我没有费心去发帖。

我认为制作新代码比调试我的代码更容易  任何帮助都感激不尽。提前谢谢。
 如果你还有问题,那就把它解雇吧。

2 个答案:

答案 0 :(得分:1)

<{1}} = I2中的

公式 =A2&B2&G2 = J2中的公式 =COUNTIF($I$2:$I$25,I2) = K2中的公式 =I2=I3 = L2

中的公式

过滤=IF(OR(K2,J2>=3,K1),"Copy","Do not copy")中的数据并复制到所需的工作表。

enter image description here

答案 1 :(得分:1)

我也赞成使用公式,我在帖子中的评论中给出的屏幕截图是使用公式派生的。但是,因为你想要一个VBA代码,所以它就是。

让我们说,你的表格看起来像这样

enter image description here

<强>逻辑:

  1. 查找Sheet1的最后一行
  2. 在Col H
  3. 中插入公式=A2&B2&D2&F2
  4. 在Col I
  5. 中插入公式=IF(H2=H3,"YES",IF(H2=H1,"YES",""))
  6. 在Col J中插入公式=IF(AND(I2="",COUNTIF(H:H,H2)>2),"YES" & H2,"")

    • 实现这一目标的目标

    enter image description here

  7. 下一步创建2张输出。让我们将连续记录输出到Consecutive表,将多个记录输出到Multiple

  8. 过滤Col I的{​​{1}}并将其移至Yes
  9. 过滤Consecutive的{​​{1}}并将其移至Col J
  10. 根据Col J
  11. Non Blanks表中的数据进行排序
  12. 从所有工作表中删除列Multiple
  13. <强>代码:

    Multiple

    <强>输出:

    enter image description here