[英]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.