在我之前的帖子中,我得到了极大的支持。我的问题已经解决了,代码已经建立,并且工作完美。以下是代码的链接:https://stackoverflow.com/a/64042549/14332329
现在我在表格中有一些国家(即“保加利亚”),它们遵守与马来西亚和印度尼西亚相同的规则(代码已经写好了),但当B栏中的条目=“ISO 22000”(在这种情况下,C栏中的条目是“食品”)时,它们也应该被标记为“保加利亚食品CL”。它也可以集成到这段代码中吗?这就是表格现在的样子。列G应显示VBA结果。
有一些国家,如克罗地亚、捷克、波兰、土耳其、印度尼西亚、马来西亚,对于ISO9001、ISO14001、OHSAS18001、ISO50001等标准是CL (=认证地点)。这些ISO标准属于C栏中的“IMS”组。在这种情况下,我希望将它们放在G栏中,如“保加利亚IMS CL”。
b)有些国家,如希腊,除ISO50001外,其他国家的CL标准与上述相同。在这种情况下,我希望将它们放在列G中,如“希腊IMS”
c)也有一些国家,如保加利亚,遵守与a)下相同的规则,另外,这些国家是其他标准的CL,如ISO2200 (C栏中的组别=“食品”)或食品安全标准(C栏中的组别=“可持续性”)。在这种情况下,我想把它们放在G栏中,比如“保加利亚食品CL”
d)对于所有其他情况,我希望在G栏中得到类似于“保加利亚IMS NC”或“保加利亚食品NC”的结果,或者根据规则“D栏中的国家+C+NC栏中的组”
我试着在原始帖子中留下同样的评论,然而,似乎已经有很多天没有人在那里看过了。我希望这篇文章可以留下,而不是删除。否则,我会很高兴评论,如何让它正确。提前谢谢你!
发布于 2020-10-11 18:49:50
试一下,
Public Sub CL_NC()
'Looks like your whole range is between A:G columns, so we insert that data
'inside the array
Dim sCLNC As String
Dim rngDB As Range
Dim i As Long
Dim arr As Variant
Dim Country As String
With ThisWorkbook.Worksheets("Gesamt")
'Last row
i = .Cells(.Rows.Count, 1).End(xlUp).Row
'insert your data into the array
Set rngDB = .Range("A1:G" & i)
arr = rngDB
'Loop through row 2 to the last (inside the array
For i = 2 To UBound(arr)
Country = Trim(Replace(arr(i, 4), "Cert ", ""))
sCLNC = getCLorNC(Country, arr(i, 2))
arr(i, 7) = Country & " " & arr(i, 3) & " " & sCLNC
Next i
rngDB = arr
End With
End Sub
Function getCLorNC(Nation As String, Regelwerk As Variant)
Dim a As Variant, b As Variant
Select Case Nation
Case "Croatia", "Czech Republic", "Poland", "Turkey", "Indonesia", "Malaysia"
a = Array("ISO 9001", "ISO 14001", "OHSAS 18001", "ISO 50001")
Case "Greece"
a = Array("ISO 9001", "ISO 14001", "OHSAS 18001")
Case "Bulgaria"
a = Array("ISO 9001", "ISO 14001", "OHSAS 18001", "ISO 50001", "ISO 22000")
Case Else
getCLorNC = "NC"
Exit Function
End Select
For Each b In a
If InStr(Regelwerk, b) Then
getCLorNC = "CL"
Exit Function
Else
getCLorNC = "NC"
End If
Next b
End Function
https://stackoverflow.com/questions/64301725
复制相似问题