为什么TEXT函数在字符数超过253时不会返回任何结果?

长话短说,我使用一个大型的Excel公式(长度大约为3000个字符)将多行数据放入一个允许直接插入数据库的格式。 由于工作上的限制,我必须这样做。 我join了这个公式,并且遇到了一个问题,那就是我的一个新列需要使用不同数量的文本。

如果在此字段中没有文本,则需要输出为NULL。 如果有文本,我需要打印带有单引号的文本。 这是我需要它的工作方式,因为数据从我们的程序导出到Excel的方式。

下面的[@ [Callback Result]]引用了我的一列的名称,因此公式可以通过locking当前行中该列的值来dynamic增长。

代码片段:

IF([@[Callback Result]]="",TEXT("NULL",""),TEXT("'"&[@[Callback Result]]&"'","")) 

如果单元格为空,则输出: NULL

如果单元格的长度不超过253个字符,则输出: “无论我要input的文本多长达253个字符,

如果单元格有超过253个字符,则输出: #VALUE! (由公式抛出错误的值)。

我已经在电子表格中的许多其他列上使用了这种策略,如果目标单元格是空白的,那么需要打印一个NULL,但是我从来没有遇到过需要使用超过253个字符(包括空格)的情况。

如果任何人都可以提供任何见解,我将不胜感激,因为我没有find解释TEXT函数限制的文档。 我使用了一个更简化的代码版本(如下所示),它不需要NULL检查,而且通过使用下面的代码可以很好地处理大量的文本:

 "'"&[@Transcription]&"', " 

我宁愿不必限制input到字段中的字符的数量,但是如果没有其他方式的话。

对不起,如果我的解释太冗长。 我想不出一个办法来缩短我的想法。 请让我知道你的想法,或者如果我需要澄清下面的任何事情。

正如上面的评论中所提到的,您似乎正在滥用TEXT函数 。 另外,您使用的格式掩码似乎不正确。

简单的string连接就足够了。

 =IF(LEN([@[Callback Result]]), "'"&[@[Callback Result]]&"'", "NULL") Alternates: =IF(LEN([@[Callback Result]]), CHAR(39)&[@[Callback Result]]&CHAR(39), "NULL") =IF(LEN([@[Callback Result]]), CONCATENATE("'", [@[Callback Result]], "'"), "NULL") =IF(LEN([@[Callback Result]]), CONCATENATE(CHAR(39), [@[Callback Result]], CHAR(39)), "NULL") 

如果提出的解决schemecertificate不适合您的情况,请提供一些示例数据以及预期结果,我将尝试扩展此方法。

附录:

虽然这个问题似乎已经通过CONCATENATE函数正确解决,但值得注意的是,可以使用正确的格式掩码来使用TEXT函数 。 @符号用于表示格式string中的文本,数字和文本可以使用相同的掩码进行格式化。 例:

 =IF(LEN([@[Callback Result]]), TEXT([@[Callback Result]], "\'0.00\';\'@\'"), "NULL") 

在上面,数字被格式化到小数点后两位,用单引号括起来。 文本被包裹在单引号中。 虽然反斜线转义字符并不是绝对需要显示单引号(它们不是格式掩码中的保留字符 ),但它们在这里并没有什么坏处,并且我已经用它们将此格式掩码的function扩展为其他字符绝对要求他们。 例如:这个工作表函数的官方文档错误地指出,在任何情况下都不能使用星号(例如*或CHAR(42))。 如果前面加了反斜杠转义符, 可以使用它。

警告:虽然一个好的自定义格式掩码可以大大提高生产力,但它不会绕过原始问题根源处的253个字符限制。

好。 我感觉特别。 故障排除的时间,我从来没有偶然发现CONCATENATEfunction。 我想如果我事先知道它会有所帮助的(还在学习)。

下面的代码完美地工作:

 IF([@[Callback Result]]="",TEXT("NULL",""),CONCATENATE("'",[@[Callback Result]],"'")) 

抱歉浪费任何人的时间,并感谢你让我更多地思考为什么TEXT函数是不实际的。