在Excel中将“会计”格式的数字转换为文本

这是交易。 我正在使用基于代码的高级filter来执行数据库search。 标准(由代码生成)将所有数据视为文本,并将*附加到所input内容的前端和后端,以便于部分查找。

我的一个领域(只有一个,在数据中间,其他方面难以区分)被格式化为“会计”。 我想将其格式化为文本,以便查询。 但是,当我使用TEXT()函数来尝试和格式化它(在任何其他情况下,我需要数字存储为文本),它不会接受“会计”作为其中一个预设。 此外,如果我试图从Excel自己的自定义格式表格复制粘贴格式,如下所示:_(*#,## 0.00 _); _(*(#,## 0.00); _(*“ – ”? ? ); (@_),然后在单元格中出现#VALUE错误。

通过select性地修剪该格式string,我已经到了不再出现错误,但无法获得列中的数字alignment的十进制(这是会计格式的一点)。

请帮忙。

你会得到#VALUE错误,因为格式string中有双引号。 如果你使用

=TEXT(B2,"_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)") 

与双引号逃脱(通过加倍),你不会得到错误。 但是你不会得到期望的结果。 数字格式和TEXT函数将产生什么之间有一些细微的差异。 我不知道他们是什么,但是这是一个。

你有一个select是写自己的function。 此function将会计格式化的数字转换成一个string,并保留货币符号和第一个数字之间的空格。

 Public Function GetRealText(Cell As Range) As String Application.Volatile GetRealText = Cell.Cells(1).Text End Function 

虽然有一个问题。 如果调整列的大小,Range.Text属性将会改变,但是这个函数不会自动更新。 即使是易失性的,列宽变化也不会触发重新计算。 你必须手动重新计算,否则其他东西将不得不触发它。

您可以使用'前缀'作为文本来input数字,date或任何值:

 Cells(1, 1) = "'" & MyNumber