2017-05-21 172 views
-3

免責聲明:我既不是Excel中的專家,也不是vba中的專家。所以我需要你的幫助來解決這個問題。Excel vlookup循環

的問題是這樣的...... 考慮具有以下值

A2證

A3通行證

A4通

A5通

A6通欄

A7是總體狀態單元格,它基於A2和A6之間的單元格中的值不同。

在A7爲值的條件應該是以下

  1. 如果在A2和A6之間的細胞的所有值均爲通行證然後A7應通行證

  2. 如果即使在值中的一個A2和A6之間的單元格是失敗的,那麼A7應該失敗

  3. 如果即使A2和A6之間的單元格中的值之一爲「無運行」或「未完成」或「不適用」,那麼單元格A7必須具有'未完成'

請給我發送vba腳本的完整代碼,並將其嵌入到excel或此公式中。

我很抱歉,如果我的問題太多了,但你的幫助對我來說會有很大的幫助。

在此先感謝

SS

+0

如果** A5 **是*失敗*和** A6 **是*否運行*,應遵循哪條規則? –

+3

1. re:'*請給我發送整個代碼...... *'這是**不是**免費代碼寫入服務。如果你不能嘗試(並在你的問題上發表你的原始努力,並收到關於錯誤的具體信息),那麼請僱傭一名程序員。 2.這可以用嵌套公式完成;沒有必要的VBA要求。你的邏輯有'洞',這在你的敘述中沒有定義。 – Jeeped

+3

不!我們不能,我們也不會! 「請給我發送整個代碼」爲什麼?我們幫助開發者,不爲你工作。 – Baro

回答

0

而不是使用VBA,可以實現這個作爲一個公式。在單元格A7輸入以下:

=IF(COUNTIF(A2:A6,"No"&"*"),"Not Completed",IF(COUNTIF(A2:A6,"Pass")=5,"Pass",IF(COUNTIF(A2:A6,"Fail"),"Fail","Not accounted for scenario"))) 

正如有人曾建議,您可能需要更改基於if報表上的規則應優先考慮的順序。

正如其他人所說的,你應該嘗試一種解決方案,並在你被困時分享,分享你的嘗試。請爲將來考慮這一點。我建議理解上述內容在Excel中是如何研究COUNTIFIF函數的(Google會迅速發現大量資源)。

+0

非常感謝。我能夠使用countif達到結果。以下是公式。 IF(COUNTIF(H3:H7,「Not Completed」)<> 0,「Not Completed」,IF(COUNTIF(H3:H7) ,「Pass」)= 5,「Pass」,IF(COUNTIF(H3:H7,「」)= 5,「No Run」,「Not Completed」)))) – user8044865

+0

很高興看到你設法找到解。請考慮標記其中一個答案作爲解決方案。 – StevenWalker

0

這應該是A7:

= IF(AND((A2 = 「通行證」),(A3 = 「通行證」),(A4 = 「通行證」),(A5 = 「通行證」) (A6 =​​「通過」)),「真」,IF(OR((A2 =「未完成」),(A3 =「未完成」),(A4 =「未完成」),(A5 = (A6 =​​「未完成」)),「未完成」,IF(OR((A2 =「不適用」),(A3 =「不適用」),(A4 =「不適用」)) (A5 =「不適用」),(A6 =​​「不適用」)),「未完成」,IF(OR((A2 =「不運行」),(A3 =「不運行」)),(A4 = (A6 =​​「No Run」)),「Not Completed」,「Not Defined」)))))

這是拉出的版本,可能是大多數人會在學習時從頭開始。有一個沒有定義的地方,你沒有提到如果你之前解釋過的情況下會發生什麼情況。
我鼓勵你閱讀IF聲明。你可能會再次遇到它們,即使是少量的研究也可能會有很長的路要走。如果您對IF語句感到滿意,請查看CountIF和VLookup。如果你在Excel中做的很多,你可能會遇到兩種情況。

祝你好運!

+0

非常感謝。我能夠使用countif達到結果。以下是公式。IF(COUNTIF(H3:H7,「Not Completed」)<> 0,「Not Completed」,IF(COUNTIF(H3:H7) ,「Pass」)= 5,「Pass」,IF(COUNTIF(H3:H 7,「」)= 5,「No Run」,「Not Completed」)))) - – user8044865

1

以下是另一種方法:編寫代碼以創建自定義公式。在VBE(Visual Basic編輯器,通過ALT + F11訪問),添加一個新的模塊,並在其中粘貼以下代碼:

Function Outcome(ResultRange As Range) As String 

    Dim Cell As Range 
    Dim Result As String 

    Result = "Pass" 

    For Each Cell In ResultRange 

     If Cell.Value = "Fail" Then 
      Result = "Fail" 
      Exit For 
     ElseIf Cell.Value = "No Run" Or Cell.Value = "Not completed" Or Cell.Value = "Not Applicable" Then 
      Result = "Not completed" 
     End If 

    Next Cell 

    Outcome = Result 

End Function 

已經做到了這一點,從電子表格中可以訪問一個名爲OUTCOME的新函數(您可以通過chaning我的代碼的第一行來重命名它)。如果輸入公式

=OUTCOME(A2:A6) 

您會得到您要查找的結果。請注意,空格和除您提到的值之外的任何內容都將被視爲「通過」。如果你願意,這並不難改變。

+0

這是一個更爲優雅的解決方案+1 – StevenWalker