我对VBScript非常陌生,并且在过去几天一直试图解决这个问题,搜索数百个(字面意思)的论坛/网站,找不到满足我需求的解决方案,所以这里有:P
我目前有一个电子表格,其中包含大量客户详细信息,例如;
MPN |经理姓名|问题077 |约翰史密斯|是
077 |简约克|否
我正在尝试将信息提取到网页,甚至可能是新的excel文件,但可以选择只显示问题“否”的单元格并过滤它们,以便管理员分开
到目前为止,我有;
Sub testing123()
Workbooks.Open Filename:="P:\book.xls"
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveSheet.Range("$B$4:$K$65536").AutoFilter Field:=10, Criteria1:= _
"=Question", Operator:=xlOr, Criteria2:="=Yes"
ActiveWorkbook.SaveAs Filename:="P:\book123.xls", FileFormat:=xlExcel8, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWorkbook.Close
End Sub
上面的代码位于单独的Excel工作表中,它打开主工作簿,过滤信息(问题=是)并将其另存为不同的名称。 我的目标是能够将信息提取到不同的工作表上,但只能直接提取过滤后的信息,并且可以根据经理名称进行排序。
如果这很难理解我很抱歉,我为缺少相关代码而道歉,但如果您需要更多信息请告诉我
答案 0 :(得分:0)
做这样的事情怎么样?我知道它与你正在做的完全不符,但它是另一种方法:
Sub Test()
Dim intSourceRowNum As Integer
intSourceRowNum = 2
Dim intDestRowNum As Integer
intDestRowNum = 1
Dim objSourceSheet As Worksheet
Set objSourceSheet = ActiveWorkbook.Sheets(1)
Dim objDestSheet As Worksheet
Set objDestSheet = ActiveWorkbook.Sheets(2)
Do Until IsEmpty(objSourceSheet.Cells(intSourceRowNum, 1))
If (StrComp(objSourceSheet.Cells(intSourceRowNum, 3).Value, "Yes", vbTextCompare) = 0) Then
objDestSheet.Cells(intDestRowNum, 1).Value = objSourceSheet.Cells(intSourceRowNum, 1).Value
objDestSheet.Cells(intDestRowNum, 2).Value = objSourceSheet.Cells(intSourceRowNum, 2).Value
objDestSheet.Cells(intDestRowNum, 3).Value = objSourceSheet.Cells(intSourceRowNum, 3).Value
intDestRowNum = intDestRowNum + 1
End If
intSourceRowNum = intSourceRowNum + 1
Loop
End Sub
基本上,它遍历源表中包含数据的所有行,并且如果源行符合您的条件,则只将每个源行的值写入目标表。