这是交易。我正在使用基于代码的高级过滤器来进行数据库搜索。标准(由代码生成)将所有数据视为文本,并在输入的任何内容的前端和后端附加*以便于部分查找。
我的一个字段(只有一个,在数据中间,否则无法区分)被格式化为“会计”。我想将其格式化为文本,以便它是可查询的。但是当我使用TEXT()函数来尝试和格式化时(正如我在其他需要将数字存储为文本的情况下那样),它不会接受“Accounting”作为预设之一。此外,如果我尝试从Excel自己的自定义格式复制粘贴格式,如下所示:_(*#,## 0.00 _); _(*(#,## 0.00); _(*“ - ”? ?); (@_),然后我在单元格中收到#VALUE错误。
通过选择性地修剪那个格式字符串,我已经到了它不再出现错误的地方,但无法获取列中的数字以对齐小数(这是会计格式的点)。
请帮忙。
答案 0 :(得分:2)
您收到#VALUE错误,因为格式字符串中包含双引号。如果你使用
=TEXT(B2,"_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)")
双引号转义(通过加倍)你不会得到错误。但是你不会得到理想的结果。数字格式与TEXT函数将产生的内容之间存在一些细微差别。我不知道它们都是什么,但这只是一个。
您有一个选择就是编写自己的功能。此函数将会计格式化数字转换为字符串,并保留货币符号和第一个数字之间的空白区域。
Public Function GetRealText(Cell As Range) As String
Application.Volatile
GetRealText = Cell.Cells(1).Text
End Function
但是有一个问题。如果您调整列的大小,Range.Text属性将更改,但此函数不会自动更新。即使它是易失性的,列宽变化也不会触发重新计算。你必须手动重新计算或其他东西必须触发它。
答案 1 :(得分:0)
您可以使用'
前缀
Cells(1, 1) = "'" & MyNumber
答案 2 :(得分:0)
将公式乘以 1,然后将包含公式的格式单元格乘以会计
Cell A1 =5000
=TEXT(A1,"$#,##0.00") gives you currency.
=TEXT(A1,"$#,##0.00")*1 now it's back to a number and displays as your cell format. Format as Accounting