sheet2的A1单元格输入公式
=INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$A$1:$A$1000="甲",ROW($A$1:$A$1000),4^8),ROW(1:1)))&""
数组公式,按CTRL+SHIFT+回车三键确定,鼠标移到单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往右拖,再往下拖拉填充
用公式你如果不太明白相对与绝对引用的话,很容易搞错,不如用宏。
随便录制一个宏,编辑它,把里面所有的字清除掉,然后贴上下面的代码,运行就可以了,你也可以指定快捷键,这样更好操作。
运行时,会弹出一个对话框,要求你输入要筛选的内容,如:甲,这样所有首列是甲的行都会复制到Sheet2当中去,绝无遗漏。Sheet1中内容更换后只要再运行一遍这个宏就可以了,也就0.1秒吧。
Sub myCopy()
Dim mm, nn, myStr, i
mm = ActiveSheet.[a65536].End(xlUp).Row
nn = Worksheets("sheet2").[a65536].End(xlUp).Row + 1
myStr = InputBox("Pls input filtering word below ")
Debug.Print mm; nn; myStr
For i = 1 To mm
If Cells(i, 1) = myStr Then
Rows(i).EntireRow.Copy Worksheets("sheet2").Cells(nn, 1)
nn = nn + 1
End If
Next i
End Sub
在sheet2的A1单元格中输入公式:
=IF(ROW()>COUNTIF(Sheet1!$A:$A,"甲"),"",INDEX(Sheet1!$A$1:$C$100,SMALL(IF(Sheet1!$A$1:$A$100="甲",ROW($1:$100),4^8),ROW()),COLUMN()))
回车后按一下F2,再按shift+ctrl+回车,然后选中A1单元格向下向右复制公式,注意向下多复制一些行,以备你在表一中添加信息后表二也能随时更新.
先在Sheet2的A1输入=IF(ISERROR(INDEX(Sheet1!A1:A1,MATCH("甲",Sheet1!A1:A1,))),"",INDEX(Sheet1!A1:A1,MATCH("甲",Sheet1!A1:A1,)))并向下填充.再在B1输入=IF(ISERROR(INDEX(Sheet1!B1:B1,MATCH($A1,Sheet1!$A1:$A1,))),"",INDEX(Sheet1!B1:B1,MATCH($A1,Sheet1!$A1:$A1,)))先向右填充至C1,然后再向下填充.
最好是使用VBA,方便很多。直接刷新过去,不需要频繁地添加一些函数