首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA中的多个ElseIf查询

VBA中的多个ElseIf查询
EN

Stack Overflow用户
提问于 2020-10-11 15:45:44
回答 1查看 68关注 0票数 0

在我之前的帖子中,我得到了极大的支持。我的问题已经解决了,代码已经建立,并且工作完美。以下是代码的链接: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栏中的组”

我试着在原始帖子中留下同样的评论,然而,似乎已经有很多天没有人在那里看过了。我希望这篇文章可以留下,而不是删除。否则,我会很高兴评论,如何让它正确。提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-11 18:49:50

试一下,

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64301725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档