创建小专题

Posted Excel VBA 小天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建小专题相关的知识,希望对你有一定的参考价值。

Sub PartFiterQuestion()

Application.DisplayAlerts = False

    Dim Wb As Workbook
    Dim Sht As Worksheet
    Dim dHow As Object
    Dim dWhat As Object
    Dim HasHow As Boolean
    Dim HasWhat As Boolean
    Dim Dic As Object
    Dim Index As Long
    Dim Ar() As String
    ReDim Ar(1 To 3, 1 To 1)
    Set Dic = CreateObject("Scripting.Dictionary")
    Set dHow = CreateObject("Scripting.Dictionary")
    Set dWhat = CreateObject("Scripting.Dictionary")
    
    Set Wb = Application.ThisWorkbook
    Set Sht = Wb.Worksheets("创建小专题")
    With Sht
        PartName = .Range("C2").Text
        endrow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
        For i = 2 To endrow
            Key = .Cells(i, 1).Text
            dHow(Key) = ""
        Next i
        endrow = .Cells(.Cells.Rows.Count, 2).End(xlUp).Row
        For i = 2 To endrow
            Key = .Cells(i, 2).Text
            dWhat(Key) = ""
        Next i
    End With
    
    Set Wb = Application.ThisWorkbook
    Set Sht = Wb.Worksheets("Question")
    With Sht
        endrow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
        Set Rng = .Range("A2:C" & endrow)
        Arr = Rng.Value
        Index = 0
        For i = LBound(Arr) To UBound(Arr)
            HasHow = False
            HasWhat = False
            Ques = CStr(Arr(i, 3))
            For Each OneHow In dHow.Keys
                If InStr(Ques, OneHow) > 0 Then
                    HasHow = True
                    Exit For
                End If
            Next OneHow
            
            For Each OneWhat In dWhat.Keys
                If InStr(Right(Ques, 6), OneWhat) > 0 Then
                    HasWhat = True
                    Exit For
                End If
            Next OneWhat
            
            If HasHow And HasWhat Then
                Index = Index + 1
                ReDim Preserve Ar(1 To 3, 1 To Index)
                For j = 1 To 3
                    Ar(j, Index) = Arr(i, j)
                Next j
            End If
            
        Next i
        
    End With
    
On Error Resume Next
      Wb.Worksheets(PartName).Delete
On Error GoTo 0

    
    
  
    Set NewSht = Wb.Worksheets.Add(After:=Wb.Worksheets(Wb.Worksheets.Count))
    NewSht.Name = PartName
    
    ‘Set NewSht = Wb.Worksheets("PartAfter")
    With NewSht
        .Range("A1:C1").Value = Array("试卷", "URL", "问题")
        
        Set Rng = .Range("A2")
        Set Rng = Rng.Resize(Index, 3)
        Rng.Value = Application.WorksheetFunction.Transpose(Ar)
        .UsedRange.Columns.AutoFit
        
    End With
    
    
    Set Dic = Nothing
    Set Wb = Nothing
    Set Sht = Nothing
    Set Rng = Nothing
    Set dWhat = Nothing
    Set dHow = Nothing
    
Application.ScreenUpdating = True
    
End Sub

  

以上是关于创建小专题的主要内容,如果未能解决你的问题,请参考以下文章

链表的基础操作专题小归纳

Android课程---Android Studio使用小技巧:提取方法代码片段

android小知识点代码片段

微信小程序代码片段分享

Flutter 中轮播图详解[Flutter专题31]#yyds干货盘点#

python实战应用讲解-numpy专题篇实用小技巧(附python示例代码)