我有一个Excel电子表格,可生成应用程序中使用的CSV脚本。脚本必须采用非常特定的格式,并且我保存了XLSX格式的主文件,其中包含受保护的工作表和数据验证,以保存CSV而不是直接编辑CSV,因为直接编辑CSV可能会导致错误。
问题是脚本几乎可以是任何长度。每行的左列只能是某组值中的一列,最后一行必须说" END"。我可以在没有VBA的情况下执行此操作的唯一方法是A列中的以下公式,从第7行(前6个是标题信息)到第1048576行(最后一行Excel行),并保护列A锁定:
=IF(AND(ISBLANK(B368),NOT(ISBLANK(B367))),"END",IF(ISBLANK(B368),"",A367))
这使得最后一行说" END"在A列中,以及空白后的所有行,这是所需的。问题是,现在保存CSV文件时,它总是有1048576行,所有底行包含分隔符" ,,,," 。这不会起作用,CSV文件需要在" END"之后停止。行。有没有办法编写公式,使Excel在保存为CSV时忽略评估为空白的单元格,或者在Excel中保存为CSV的替代方法将忽略评估为空白的所有行?
注意:我已经在VBA中使用了我可以在自己的机器上使用的解决方案(它将数据复制到" END",以纯文本格式粘贴到新工作表中,然后另存为CSV使用原始工作表的名称)。但是,我想分享这张表,并且绕过安全限制来共享我公司的宏是一件痛苦的事。所以我正在寻找一种可以在没有宏的情况下完成的方法,如果它可能的话。
在寻找答案时,我发现这个链接类似,但不一样: Saving Excel data as csv with VBA - removing blank rows at end of file to save
作为"空白"我有活动行,因为它们包含公式,此方法不起作用。
答案 0 :(得分:0)
手动删除行/列将重置大小,如GSerg在另一个问题中所述。另外,也可以按照GSserg的建议,在保存之前将数据复制到新表中。
否则,一个简单的解决方法可能是创建一个小的Excel预处理/预处理脚本-可能使用批处理文件Batch / Find And Edit Lines in TXT file-或使用任何小型脚本语言的类似解决方案来删除多余的行。