Excel嵌套if语句 - 需要帮助排除故障
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel嵌套if语句 - 需要帮助排除故障相关的知识,希望对你有一定的参考价值。
我需要一些新鲜的眼睛。我一直在逐步进行这项工作,并从让它工作到破碎。此时我的眼睛正在穿越,我可以使用一些帮助。此电子表格中的列H包含计算机ID,列I是日期。如果H和I都是空白的话我希望它什么都不显示(这是我最近破坏它的点,并决定寻求帮助。这个逻辑不包括在内。)如果H或I都有,但两者都没有值,它会显示“NO”。如果H和I都有值,它将调用一个自定义函数,如果该目录尚不存在,将创建该目录。此外,如果目录已创建或存在,我想显示“是”。如果H和I都是空的,我尝试不显示任何内容之前所有功能都正常工作。
这是我正在使用的公式:
=IF(COUNTA(H21:I21)<>COLUMNS(H21:I21), "NO",IF(CREATEDIR(CONCATENATE(TEXT(I21,"yyyy"),"",TEXT(I21,"m-d-yy"),"",H21))=0,"YES", "NO"))
这是我正在使用的VBA功能(路径详细信息省略)
Function CREATEDIR(dateId)
If Len(Dir("Z:pathname" & dateId, vbDirectory)) = 0 Then
MkDir "Z:pathname" & dateId
End If
End Function
:
答案
将UDF更新为以下内容,以便它可以构建完整的文件夹路径,以防它不存在(这将处理网络文件夹路径,如\serverfoldersubfolders
以及本地或映射文件夹路径,如Z:pathname
)。你需要将sBeginPath
设置为它应该是什么:
Function CREATEDIR(dateID) As String
Dim sBeginPath As String
Dim sBuildPath As String
Dim vFolder As Variant
Dim i As Long
sBeginPath = "C:Test"
If Right(sBeginPath, 1) <> "" Then sBeginPath = sBeginPath & ""
For Each vFolder In Split(sBeginPath & dateID, "")
If Len(vFolder) > 0 Then
If Len(sBuildPath) = 0 Then
If i > 0 Then
sBuildPath = "\" & vFolder & ""
Else
sBuildPath = vFolder
End If
Else
If i > 0 Then
sBuildPath = sBuildPath & vFolder & ""
i = i + 1
Else
sBuildPath = sBuildPath & "" & vFolder
End If
End If
If (Len(sBuildPath) > 0) And (i = 0 Or i >= 3) Then
If Len(Dir(sBuildPath, vbDirectory)) = 0 Then MkDir sBuildPath
End If
Else
i = i + 1
End If
Next vFolder
CREATEDIR = "YES"
End Function
然后将您的公式更新为以下(使用@pnuts建议的CHOOSE
方法):
=CHOOSE(COUNTA(H21:I21)+1,"", "NO",CREATEDIR(CONCATENATE(TEXT(I21,"yyyy"),"",TEXT(I21,"m-d-yy"),"",H21)))
以上是关于Excel嵌套if语句 - 需要帮助排除故障的主要内容,如果未能解决你的问题,请参考以下文章