search范围的文本,如果find,将单元格复制到电子表格的另一部分

我是新来的Excelmacros,所以不知道如何编码。 基本上,在运行时,我想search一定范围的数字范围(如1700-1799,2900-2999)的单元格范围(在这种情况下,A2-A25),如果find,复制/sorting他们在电子表格。

例如,工作表(运行后)将如下所示:
1712
2983
2931
1723
1745

1712
1723
1745

2983
2931

像这样的macros是可能的吗?

这将把结果放在BC列中:

Sub GetValues() Dim A As Range, r As Range Dim i As Long, j As Long Dim v As Long Set A = Range("A2:A25") i = 1 j = 1 For Each r In A v = r.Value If v >= 1700 And v <= 1799 Then Cells(i, "B").Value = v i = i + 1 End If If v >= 2900 And v <= 2999 Then Cells(j, "C").Value = v j = j + 1 End If Next r End Sub 

编辑#1

该版本将结果存储在A 行,从第30 开始, 第50行开始……………..修改以满足您的需求:

 Sub GetValues() Dim A As Range, r As Range Dim i As Long, j As Long Dim v As Long Set A = Range("A2:A25") i = 30 j = 50 For Each r In A v = r.Value If v >= 1700 And v <= 1799 Then Cells(i, "A").Value = v i = i + 1 End If If v >= 2900 And v <= 2999 Then Cells(j, "A").Value = v j = j + 1 End If Next r End Sub 

编辑#2

该版本复制整个行:

 Sub GetValues() Dim A As Range, r As Range Dim i As Long, j As Long Dim v As Long Set A = Range("A2:A25") i = 30 j = 50 For Each r In A v = r.Value If v >= 1700 And v <= 1799 Then r.EntireRow.Copy Cells(i, "A") i = i + 1 End If If v >= 2900 And v <= 2999 Then r.EntireRow.Copy Cells(j, "A") j = j + 1 End If Next r End Sub 

你不需要一个macros,你可以使用这个数组公式:

 =SMALL(IF(($A$1:$A$25>=1700)*($A$1:$A$25<=1799);$A$1:$A$25;"");ROW(A1)) 

写,例如在c1中,并抄下来获得所有的值。

您需要Ctrl Shift Enter来input公式

根据您的区域设置,您可能需要replace“;” 按“,”