我有一个要求,其中,如果存在,我需要删除该特定列。
我试图通过列标题找到“特殊”列。
这是我的代码,
If sColumnName = (WorksheetFunction.Match("RSD", Sheets("RS_Report").Rows(1), 0)) And sColumnName = True Then
DDC= WorksheetFunction.Match("RSD", Sheets("RS_Report").Rows(1), 0)
DFC= GetColumnLetter(DDC)
Range(DFC& 1 & ":" & DFC& lastrow).Select
Selection.Delete Shift:=xlUp
GetColumnLetter和lastrow是我的用户定义函数,它们返回正确的值。我不知道如何检查列是否存在。请帮助我。分享你的想法。
答案 0 :(得分:3)
你可以这样做
Dim col As Variant
With Sheets("RS_Report") '<--| reference relevant worksheet
col = WorksheetFunction.Match("RSD", .Rows(1), 0) '<--| try searching its row 1 for wanted header text
If Not IsError(col) Then .Columns(col).Delete '<--| if found then delete its entire column
End With
答案 1 :(得分:1)
有三种方法可以做到这一点。
1)一个for循环,它查找特定字符串的标题行的范围 亲:很容易 Con:字符串必须准确
类似
Dim string as yourString
Dim lColumn As Long
lColumn = ws.UsedRange.Columns.Count
yourString = whatever
for x = 1 to lcolumn
if range(cells(1, 1), Cells(1, x)).Value = yourString
Columns(x).EntireColumn.Delete
End If
next
2)使用Range.Find方法,您可以在这里了解https://msdn.microsoft.com/en-us/library/office/ff839746.aspx
以下是一个简短的粗略示例,您可以将其作为参考:
Sub Header_Format()
Dim rLastCell As Range
Set rLastCell = UpdateSheet.Cells.Find(What:="*", After:=UpdateSheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
With UpdateSheet.Range(Cells(4, 1), Cells(4, rLastCell.Column))
.Copy MasterSheet.Cells(1, 1)
.Copy RemovalSheet.Cells(1, 1)
End With
End Sub
3)最后有人使用匹配方法,有人已经谈过了。
https://msdn.microsoft.com/en-us/library/office/ff835873.aspx