簡體   English   中英

Excel中的VBA-如果語句Counter無法正常工作

[英]VBA in Excel - If statement Counter wont work

我一直在嘗試使此VBA腳本能夠自動執行任務,但無法使其正常工作。

基本上,我在excel中有一個很大的任務列表,其中包含多列和超過1000行。 它包含任務,任務分配給誰,打開還是關閉。

在H列中是分配給誰,在N列中是打開還是關閉任務。

我正在嘗試按姓氏搜索,如果它是OPEN,則將其添加到計數器中。 最終目標是獲得一個人要完成的任務總數。 另外,第N列(任務狀態)中的某些單元格具有諸如注釋等額外的文本。我確信InStr函數可以在Cell中搜索一個單詞更好,但我無法弄清楚...

這是我的代碼

Sub statuscount()

Dim tasksheet As Worksheet
Dim simons_count As Integer

Set tasksheet = ThisWorkbook.Sheets("tasks")

lr = tasksheet.Cells(Rows.Count, 1).End(xlUp).Row

For x = 5 to lr
    If tasksheet.Cells(x, 8) = "Simons" And tasksheet.Cells(x, 14) = "OPEN" Then
       simons_count = simons_count + 1
End If

Next x

tasksheet.Range("$O$5").Value = simons_count

End Sub

謝謝您的幫助!

在VBA中使用If / And會比較棘手,最好嵌套兩個if語句:

For x = 5 to lr
    If tasksheet.Cells(x, 8) = "Simons" Then
        If InStr(tasksheet.Cells(x, 14).Value, "OPEN") > 0 Then
            simons_count = simons_count + 1
        End If
    End If
Next x

這是一個更通用的功能。 插入一個模塊,並在其中插入以下代碼。 比起其他任何Excel內置函數,您可以使用該函數

Function LastNamecounter(lastName As String, status As String) As Long
    LastNamecounter = 0
    Dim tasksheet As Worksheet
    Set tasksheet = ThisWorkbook.Sheets("tasks")
    lr = tasksheet.Cells(Rows.Count, 1).End(xlUp).Row

    For i = 5 To lr
        If InStr(tasksheet.Cells(i, 8).Value, lastName) <> 0 And InStr(tasksheet.Cells(i, 14).Value, status) <> 0 Then
           LastNamecounter = LastNamecounter + 1
        End If
    Next i
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM