我正在创建一个powershell脚本,通过标准化的Excel电子表格将数据上传到SQL Server。我想在excel电子表格中进行一些错误检查,这样如果链接不正确,我可以把它全部放回填写电子表格的用户身上。
此处的示例是excel电子表格公司部分的一部分:
此错误指的是经理人列表栏(D2),它在经理上传表格中不存在:
以上是使用以下公式:
=IF(COUNTIF('Manager'!$A$2:$A$1048576, [@[Manager Pin]])>0, "", "Manager Pin Does Not Exist")
我想要的是根据字段返回多个错误,每个字段之间有换行符分隔符,因此在图像1中,如果管理员PIN和公司PIN都不存在,那么错误(A2)中的结果将是是:
这样我可以排除任何导入,其中错误部分在SQL方面不为空。
---------按位错误集:
作为3个可能错误的按位错误集的示例:
0 - No errors
1 - Manager pin not valid
2 - Company pin not valid
3 - Manager pin not valid
Company pin not valid
4 - Company name is null - required field
5 - Manager pin not valid
Company name is null - required field
6 - Company pin not valid
Company name is null - required field
7 - Manager pin not valid
Company pin not valid
Company name is null - required field
因此,上述错误将在电子表格中的单独工作表上创建。然后我可以在电子表格中创建一个计算错误代码的隐藏列。之后,我应该做的就是根据隐藏列中的错误代码引用ERRORS列中的错误代码。
答案 0 :(得分:1)
您可以连接两个单独的类似检查的结果。假设您有一张Company
张,其中Manager
张的布局类似:
=IF(COUNTIF(Manager!$A$2:$A$1048576, [@[Manager Pin]])>0,
"", "Manager Pin Does Not Exist")
& IF(COUNTIF(Company!$A$2:$A$1048576, [@[Company Pin]])>0,
"", CHAR(10)&"Company Pin Does Not Exist")
顺便说一句,为什么要使用$A$2:$A$1048576
而不仅仅是A:A
?如果你在serched表中有一个标题行无论如何都不匹配,那么让我们简化它。
=IF(COUNTIF(Manager!A:A, [@[Manager Pin]])>0, "", "Manager Pin Does Not Exist")
& IF(COUNTIF(Company!A:A, [@[Company Pin]])>0, "", CHAR(10)&"Company Pin Does Not Exist")
。MATCH
替代方案:
=IF(ISNUMBER(MATCH([@[Manager Pin]], Manager!A:A,0)), "", "Manager Pin Does Not Exist")
& IF(ISNUMBER(MATCH([@[Company Pin]], Company!A:A,0)), "", CHAR(10)&"Company Pin Does Not Exist")
答案 1 :(得分:1)
如果您有权访问TEXTJOIN
function(Excel 2016+),则可以按换行符加入:
= TEXTJOIN( CHAR(10), TRUE, IF(...), IF(...) )