-3
我有一个列表,其中1000个地理参数 - 根据文件类型而定 - 在一个列中。我想复制以字符串“文件,几何,特征计数,图层SRS,GEOGCS,PROJGCS等...”开头的行(图片)到下一列。几个参数,例如 - PROJGCS可能会出现在一个文件中,而不是另一个文件。如果单元格值以特定字符串开头,如何复制范围内的行?
我有一个列表,其中1000个地理参数 - 根据文件类型而定 - 在一个列中。我想复制以字符串“文件,几何,特征计数,图层SRS,GEOGCS,PROJGCS等...”开头的行(图片)到下一列。几个参数,例如 - PROJGCS可能会出现在一个文件中,而不是另一个文件。如果单元格值以特定字符串开头,如何复制范围内的行?
你可以使用高级筛选,这样的事情:
Sub FilterThings()
'Add header row and call it something
Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").FormulaR1C1 = "Bananas"
'Create named range to use in filter
ActiveWorkbook.Names.Add Name:="Source", RefersToR1C1:=Replace(Range("A1").CurrentRegion.Address(True, True, xlR1C1, True), "[" & ActiveWorkbook.Name & "]", "=")
'Add in criteria
Range("P1").FormulaR1C1 = "Bananas"
Range("P2").FormulaR1C1 = "=""File*"""
Range("P3").FormulaR1C1 = "=""Geometry*"""
Range("P4").FormulaR1C1 = "=""Feature Count*"""
Range("P5").FormulaR1C1 = "=""Layer SRS*"""
Range("P6").FormulaR1C1 = "=""GEOGCS*"""
Range("P7").FormulaR1C1 = "=""PROJGCS*"""
'Create named range to use in filter
ActiveWorkbook.Names.Add Name:="Criteria", RefersToR1C1:=Replace(Range("P1").CurrentRegion.Address(True, True, xlR1C1, True), "[" & ActiveWorkbook.Name & "]", "=")
'Filter to Location
Range("Source").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("Criteria"), CopyToRange:=Range("G1")
'Delete Criteria column
Columns("P:P").Delete Shift:=xlToLeft
'Delete Header Bananas row
Rows("1:1").Delete Shift:=xlUp
'Delete named ranges
ActiveWorkbook.Names("Criteria").Delete
ActiveWorkbook.Names("Extract").Delete
ActiveWorkbook.Names("Source").Delete
End Sub
你可以代替香蕉别的东西或离开的那部分,如果你已经有一个标题。在这里,我假定你的数据刚好在A列的第1行,并且已经任意放在G列中,并且你可以改变标准的位置而不会产生不利影响。
工作就像一个魅力。非常感谢。 – saravanaganesh18
看起来你想要一个过滤器。请参阅https://support.office.com/en-us/article/Filter-data-in-a-range-or-table-01832226-31b5-4568-8806-38c37dcc180e –
可能最好沿着列向下走,检查通过循环列表来查看该值是否符合标准。如果它不符合标准,请删除该行。 –
我正在使用过滤器 - >高级标准,通过创建关键字列表。它完美的作品。但蒂姆爱德华兹在答案中给出的代码是完全一样的。 – saravanaganesh18