0

我对 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 工作表中,它打开主工作簿,过滤信息(问题=是)并将其保存为不同的名称。我的目标是能够将信息提取到不同的工作表上,但仅直接提取过滤后的信息,并且可以根据经理姓名进行排序。

如果这很难理解,我很抱歉,对于没有显示相关代码,我深表歉意,但是如果您需要更多信息,请告诉我

4

1 回答 1

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

基本上,它会遍历源工作表中包含数据的所有行,并且仅在源行与您的条件匹配时才将每个源行的值写入目标工作表。

于 2013-09-10T17:52:00.273 回答