ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 699|回复: 1

IF函数是否可以作为多条件IF函数本身的条件成立结果?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-22 21:15 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如题,IF函数是否可以作为多条件IF函数本身的条件成立结果?
下面是部分代码,有没有路过的帮忙分析注释下,这么多个if应该怎么看? 底子较薄,嵌套一多就晕了。谢谢了。
  1. Dim WireData() As String

  2. Private Sub SortPart() 'store page to arrar
  3. ReadPage (Cells(6, 2).Value)

  4. Dim intVariable As Integer
  5. Dim ComTERM As Boolean
  6. Dim ComTERM01 As Boolean
  7. Dim ComTERM02 As Boolean
  8. Dim ComCABLE As Boolean
  9. Dim CheckCableLength As Boolean

  10. ThisWorkbook.Worksheets("Report").Range("A3:N300").ClearContents
  11. ThisWorkbook.Worksheets("DT").Range("K2:K300").ClearContents
  12. ThisWorkbook.Worksheets("DT").Range("T2:T300").ClearContents

  13. CheckCableLength = False

  14. For n = 1 To UBound(WireData, 2)
  15.    
  16. ComCABLE = False
  17. ComTERM = False
  18. ComTERM01 = False
  19. ComTERM02 = False
  20.       
  21.     For h = 2 To ThisWorkbook.Worksheets("DT").UsedRange.Rows.Count
  22.         'sort the connectors which HPN in LABEL column
  23.     If WireData(2, n) = "CNCTR" Then
  24.    
  25.        If WireData(5, n) = "" Then
  26.         
  27.             If WireData(2, n) & WireData(6, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Then
  28.                Worksheets("DT").Cells(h, 11).Value = Worksheets("DT").Cells(h, 11).Value + 1
  29.                WireData(6, n) = Worksheets("DT").Cells(h, 8).Value
  30.                ComTERM = True
  31.             End If
  32.          
  33.        Else:
  34.         
  35.             If WireData(2, n) & WireData(5, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Then
  36.                Worksheets("DT").Cells(h, 11).Value = Worksheets("DT").Cells(h, 11).Value + 1
  37.                WireData(5, n) = Worksheets("DT").Cells(h, 8).Value
  38.                ComTERM = True
  39.             End If
  40.         End If
  41.      Else:
  42.                   
  43.          If WireData(2, n) & WireData(5, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Or WireData(5, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Then
  44.             Worksheets("DT").Cells(h, 11).Value = Worksheets("DT").Cells(h, 11).Value + 1   'statistic terminal
  45.             WireData(5, n) = Worksheets("DT").Cells(h, 8).Value                       'replace termianl type
  46.             ComTERM01 = True
  47.          End If
  48.                   
  49.          If WireData(2, n) & WireData(7, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Or WireData(7, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Then
  50.             Worksheets("DT").Cells(h, 11).Value = Worksheets("DT").Cells(h, 11).Value + 1   'statistic terminal
  51.             WireData(7, n) = Worksheets("DT").Cells(h, 8).Value                       'replace termianl type
  52.             ComTERM02 = True
  53.          End If
  54.                   
  55.          ComTERM = ComTERM01 And ComTERM02
  56.                
  57.      If WireData(2, n) & WireData(3, n) = Worksheets("DT").Cells(h, 15).Value And Worksheets("DT").Cells(h, 15).Value <> "" Then
  58.             ComCABLE = True
  59.             
  60.             If WireData(4, n) <> "" And WireData(4, n) <> " " And WireData(4, n) <> "N/A" And WireData(4, n) <> "TBD" Then
  61.                 intVariable = Val(WireData(4, n)) / 100
  62.             
  63.                 If 0 < intVariable Then Worksheets("DT").Cells(h, 20).Value = Worksheets("DT").Cells(h, 20).Value + intVariable
  64.                
  65.                 Else: CheckCableLength = True
  66.                     ' WireData(1, n) = "无长度"pirate
  67.                 End If
  68.             
  69.             End If
  70.         
  71.        End If
  72.       
  73.   Next h
  74.      
  75.    
  76.         For j = 1 To UBound(WireData, 2)
  77.             x = x + 1
  78.             If WireData(10, j) <> WireData(10, j - 1) Then  '工作表名不相等时,一段范围内同一工作表
  79.                Worksheets.Add before:=Worksheets("sheet1")
  80.                TotallPage = TotallPage + 1
  81.                x = 1
  82.                ActiveSheet.Name = WireData(10, j)
  83.             End If
  84.          
  85.             For i = 1 To 9
  86.                ActiveSheet.Cells(x, i).Select
  87.                If (i = 2 Or i = 6 Or i = 8) And WireData(i, j) <> "" Then
  88.                ActiveCell.FormulaR1C1 = "'" & WireData(i, j)
  89.                Else: ActiveSheet.Cells(x, i).Value = WireData(i, j)
  90.                    'ActiveCell.FormulaR1C1 = "'4/0"
  91.                End If
  92.             Next i
  93.        Next j
  94.               
  95. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-22 21:45 | 显示全部楼层
If WireData(2, n) = "CNCTR" Then
   
       If WireData(5, n) = "" Then
        
            If WireData(2, n) & WireData(6, n) = Worksheets("DT").Cells(h, 6).Value And Worksheets("DT").Cells(h, 6).Value <> "" Then
我打个比方,我截几个解释下我的疑问,if ...then 后面不是应该有一个条件成立结果么,怎么又直接跟着if函数啦?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-18 17:30 , Processed in 0.034764 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表