我试图根据一系列单元格隐藏一个工作簿/工作表中的行。我需要查看范围中的每个单元格,并确定初始工作簿/工作表中单个单元格的字符串中是否存在匹配项。 行范围包含国家/地区名称,如:
美利坚合众国
法国
安提瓜和巴布达
阿根廷
但要比较的单元格如下:
我试图研究并整理代码,但我真的不知道我在做什么。这就是我所拥有的。我确定问题是If语句。
vwb.Activate
ActiveWorkbook.Sheets(tabName).Select
For Each c In vwb.Worksheets(tabName).Range("A121:A345").Text
If Application.WorksheetFunction.CountIf(InStr(1, twb.Worksheets("Basic_Info”).Range("COS"), c.Value)) Then
Else
vwb.Worksheets(tabName).Rows(c.Row).EntireRow.Hidden = True
End If
Next
答案 0 :(得分:1)
如果您尝试隐藏COS
范围内找到匹配项的行,请执行以下示例框架。为了便于测试,我将twb更改为vwb。如果您想隐藏不匹配的地方,请使用InStr(1, c.Value, countriesArr(i, 1)) = 0
Option Explicit
Sub test()
Dim vwb As Workbook
Set vwb = ThisWorkbook
Dim c As Range
Dim tabName As String
tabName = "Sheet1"
Dim i As Long
Dim countriesArr() As String
'countriesArr = vwb.Worksheets("Basic_Info").Range("COS").Value 'twb.
countriesArr = Split(vwb.Worksheets("Basic_Info").Range("COS").Value, ",")
Dim unionRng As Range
For Each c In vwb.Worksheets(tabName).Range("A121:A345")
For i = LBound(countriesArr) To UBound(countriesArr)
If InStr(1, c.Value, countriesArr(i)) > 0 Then
If Not unionRng Is Nothing Then
Set unionRng = Union(unionRng, c)
Else
Set unionRng = c
End If
Exit For
End If
Next i
Next c
If Not unionRng Is Nothing Then
unionRng.EntireRow.Hidden = True
End If
End Sub
答案 1 :(得分:0)
它比你所采取的路径简单得多(可能是混乱:))。
如果您不了解此代码与您所做的不同,请参阅下文并提出任何问题:
foreach ($Data as $value) {
list ($length, $hight) = $Data;
}