Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只有可见单元格的Excel VBA If语句_Vba_Excel_If Statement - Fatal编程技术网

只有可见单元格的Excel VBA If语句

只有可见单元格的Excel VBA If语句,vba,excel,if-statement,Vba,Excel,If Statement,我试图编写一个代码,在过滤字段中使用if语句,它将查找特定单元格范围的第一个字母值,如果该字母属于特定范围,那么我想输出特定人的首字母 我的代码是: Sub NewFilter() Dim wbI As Workbook, wb0 As Workbook Dim wsI As Worksheet, ws0 As Worksheet Dim myRange As Range Dim outputRange As Range Dim i As Long, j As Long 'Establish

我试图编写一个代码,在过滤字段中使用if语句,它将查找特定单元格范围的第一个字母值,如果该字母属于特定范围,那么我想输出特定人的首字母

我的代码是:

Sub NewFilter()
Dim wbI As Workbook, wb0 As Workbook
Dim wsI As Worksheet, ws0 As Worksheet
Dim myRange As Range
Dim outputRange As Range
Dim i As Long, j As Long

'Establish my source of info worbooks and worksheet
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets("Sheet1")

'Filters Original wb by criteria
Selection.AutoFilter
ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=Array( _
    "Gur Insurance Plan 1", "Gur Insurance Plan 2", "Gur Insurance Plan 3", _
    "Gur Insurance Plan 4", "Gur Insurance Pol No 1", "Gur Insurance Pol No 2", _
    "Gur Insurance Pol No 3"), Operator:=xlFilterValues

'Establish and create new worbook where I will output my info
Set wb0 = Workbooks.Add

With wb0

'Save new workbook
Set ws0 = wb0.Sheets("Sheet1")
.SaveAs Filename:="New Soarian Test"

'Copy all visible cells in original workbook
wsI.Cells.Copy

'Paste values and formatting rules into new workbook
ws0.Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
ws0.Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
 End With

    'Add a new column into A called "Rep"
ws0.Columns("A:A").InsertShift:=xlToRight,                                       CopyOrigin:=xlFormatFromLeftOrAbove
ws0.Range("A1").Value = "Rep"

'Filter Soarian Column by "Approved"
Selection.AutoFilter
ws0.Range("A1").AutoFilter Field:=7, Criteria1:=Array( _
     "APPROVED"), Operator:=xlFilterValues

'Select and delete cells then unfilter all
ws0.Range("A2:I1000").SpecialCells(xlCellTypeVisible).Select
Application.DisplayAlerts = False
Selection.Delete
Application.DisplayAlerts = True
ws0.AutoFilterMode = False

'Filter EncProv by Clincal Psych and Physcial Therapy
ws0.Range("A1").AutoFilter Field:=3, Criteria1:=Array( _
     "PHYSICAL THERAPY", "CLINIC PSYCH OUTPAT"), Operator:=xlFilterValues

'Select visible cells and delete them and then unfilter
ws0.Range("A2:I1000").SpecialCells(xlCellTypeVisible).Select
Application.DisplayAlerts = False
Selection.Delete
Application.DisplayAlerts = True
ws0.AutoFilterMode = False

'Filter EncProv by NPL Endo
ws0.Range("A1").AutoFilter Field:=3, Criteria1:=Array( _
      "NPL ENDOCRINOLOGY"), Operator:=xlFilterValues
ws0.Range("A1").Select

Set myRange = Range("E2:E1000" & Cells(Rows.Count, "E").End    (xlUp).Row).SpecialCells(xlCellTypeVisible)
Set outputRange = Range("A2:A1000" & Cells(Rows.Count, "E").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
For i = 1 To myRange.Rows.Count
    For j = 1 To myRange.Columns.Count
    If Left(myRange.Cells(i, j).Value, 1) >= "A" And Left(myRange.Cells(i,  j).Value, 1) <= "K" Then
            outputRange.Cells(i, j).Value = "MCJ"
    End If
    Next j
Next i

End Sub
Sub-NewFilter()
将wbI设置为工作簿,将wb0设置为工作簿
将wsI设置为工作表,将ws0设置为工作表
将myRange变暗为Range
Dim outputRange As范围
我和我一样长,我和我一样长
'建立我的图书和工作表信息来源
设置wbI=此工作簿
设置wsI=wbI.Sheets(“Sheet1”)
'按条件筛选原始wb
自动筛选
ActiveSheet.Range(“A1”)。自动筛选字段:=5,准则1:=Array(_
“通用电气保险计划1”、“通用电气保险计划2”、“通用电气保险计划3”_
“通用电气保险计划4”、“通用电气保险政策1”、“通用电气保险政策2”_
“Gur Insurance Pol No 3”),运算符:=xlFilterValues
'建立并创建新的工作簿,我将在其中输出我的信息
设置wb0=工作簿。添加
使用wb0
'保存新工作簿
设置ws0=wb0.Sheets(“Sheet1”)
.SaveAs文件名:=“新的Soarian测试”
'复制原始工作簿中的所有可见单元格
wsI.Cells.Copy
'将值和格式规则粘贴到新工作簿中
ws0.Range(“A1”).Paste特殊粘贴:=xlValue,操作:=xlNone_
SkipBlanks:=False,转置:=False
ws0.Range(“A1”).Paste特殊粘贴:=xlPasteFormats,操作:=xlNone_
SkipBlanks:=False,转置:=False
以
'将新列添加到名为“Rep”的
ws0.Columns(“A:A”).InsertShift:=xltorRight,CopyOrigin:=xlFormatFromLeftOrAbove
ws0.Range(“A1”).Value=“Rep”
'按“已批准”筛选Soarian列'
自动筛选
ws0.Range(“A1”)。自动筛选字段:=7,准则1:=Array(_
“批准”),运算符:=xlFilterValues
'选择并删除单元格,然后取消筛选所有单元格
ws0.Range(“A2:I1000”).SpecialCells(xlCellTypeVisible)。选择
Application.DisplayAlerts=False
选择。删除
Application.DisplayAlerts=True
ws0.AutoFilterMode=False
“通过临床心理和心理治疗进行过滤”
ws0.Range(“A1”)。自动筛选字段:=3,准则1:=数组(_
“物理治疗”、“临床心理输出”),运算符:=xlFilterValues
'选择可见单元格并删除它们,然后取消筛选
ws0.Range(“A2:I1000”).SpecialCells(xlCellTypeVisible)。选择
Application.DisplayAlerts=False
选择。删除
Application.DisplayAlerts=True
ws0.AutoFilterMode=False
'按NPL Endo筛选EnProv
ws0.Range(“A1”)。自动筛选字段:=3,准则1:=数组(_
“NPL内分泌”),运算符:=xlFilterValues
ws0.范围(“A1”)。选择
设置myRange=Range(“E2:E1000”和单元格(Rows.Count,“E”).End(xlUp.Row).特殊单元格(xlCellTypeVisible)
设置输出范围=范围(“A2:A1000”和单元格(Rows.Count,“E”)。结束(xlUp.Row)。特殊单元格(xlCellTypeVisible)
对于i=1到myRange.Rows.Count
对于j=1到myRange.Columns.Count
如果左(myRange.Cells(i,j).Value,1)>=“A”,左(myRange.Cells(i,j).Value,1)