ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3943|回复: 20

[求助] 求一个中文小写自定义函数:函数中回避使用worksheetfunction

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-2 11:15 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求一个中文小写自定义函数:函数中回避使用worksheetfunction。
是这样,这个函数要在powerpoint使用,你知道,要调用worksheetfunction前提是要启动Excel,而我又不想在后台启动Excel,原因我在调用worksheetfunction时ppt老出错误,所以只好规避Excel了。
大侠若有其他的路子也请指教。

TA的精华主题

TA的得分主题

发表于 2020-3-2 11:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 micch 于 2020-3-2 13:59 编辑

中文小写??啥意思,中文数字吗;写一个小于十万的自然数,中文小写,不考虑小数和负数



  1. Function num(x)
  2.     x = Int(x)
  3.     If x < 10 Then
  4.              num = Mid("零一二三四五六七八九十百千万", x + 1, 1)
  5.     Else
  6.             num = num(Left(x, 1)) & Mid("个十百千万", Len(x), 1)
  7.             If Val(Mid(x, 2)) Then num = num & IIf(Mid(x, 2, 1) = "0", "零", "") & num(Mid(x, 2))
  8.     End If
  9. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-3-2 11:58 | 显示全部楼层
之前不是有人闲无聊一直在讨论这个问题吗?翻查一下帖子就好了

TA的精华主题

TA的得分主题

发表于 2020-3-2 13:40 | 显示全部楼层
本帖最后由 lss001 于 2020-3-2 21:02 编辑

'*********************
Function numTotext(x)
Set ex = CreateObject("excel.application")
numTotext = ex.Evaluate("NUMBERSTRING(""" & x & """,3)")
End Function
Sub ntx()
    MsgBox numTotext(123456789)
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-2 14:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2020-3-2 11:28
中文小写??啥意思,中文数字吗;写一个小于十万的自然数,中文小写,不考虑小数和负数

是的,将阿拉伯数字实现中文小写。谢谢你,这个可以用一些,只可惜有一定的限制。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-2 14:28 | 显示全部楼层
microyip 发表于 2020-3-2 11:58
之前不是有人闲无聊一直在讨论这个问题吗?翻查一下帖子就好了

是的,找了好多,有很多用了工作表函数。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-2 14:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2020-3-2 13:40
Sub bb() 'PPT自带大小写转换函数LCase
    s = LCase("ABBCCC")
End Sub

你这是字母大小写吧?要实现1-一;2-二,3-三、4-四……这样的转换。

TA的精华主题

TA的得分主题

发表于 2020-3-2 14:32 | 显示全部楼层
weiyingde 发表于 2020-3-2 14:25
是的,将阿拉伯数字实现中文小写。谢谢你,这个可以用一些,只可惜有一定的限制。

根据需要写嘛,如果不会遇到负数和小数,那代码就不需要处理了,如果数字大于10万,还得加内容
如果写完全通用的,有点麻烦

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-2 14:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2020-3-2 14:32
根据需要写嘛,如果不会遇到负数和小数,那代码就不需要处理了,如果数字大于10万,还得加内容
如果写完 ...

那就凑合着用吧,学艺不精,只好将就着。

TA的精华主题

TA的得分主题

发表于 2020-3-2 15:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
网上有很多不用工作表函数实现阿拉伯数字转人民币大写的代码,仅把它改一改,就可以变成阿拉伯数字转小写中文了。
  1. Function NumToCN(ByVal Num)
  2.     Application.Volatile True
  3.     Num = Trim(Num)
  4.     If Not IsNumeric(Num) Then NumToCN = "#N/A": Exit Function
  5.     Place = "分角点十百千万十百千亿十百千万"
  6.     Dn = "一二三四五六七八九"
  7.     D1 = "整〇元〇〇〇万〇〇〇亿〇〇〇万"
  8.     If Num < 0 Then FuHao = "(负)"
  9.     Num = Format(Abs(Num), "###0.00") * 100
  10.     If Num > 999999999999999# Then: NumToCN = "数字超出转换范围!!": Exit Function
  11.     If Num = 0 Then: NumToCN = "〇": Exit Function
  12.     NumA = Trim(Str(Num))
  13.     NumLen = Len(NumA)
  14.     For j = NumLen To 1 Step -1     ' 数字转换过程
  15.       temp = Val(Mid(NumA, NumLen - j + 1, 1))
  16.       If temp <> 0 Then             ' 非〇数字转换
  17.          numc = numc & Mid(Dn, temp, 1) & Mid(Place, j, 1)
  18.       Else                          ' 数字〇的转换
  19.          If Right(numc, 1) <> "〇" Then
  20.            numc = numc & Mid(D1, j, 1)
  21.          Else
  22.            Select Case j            ' 特殊数位转换
  23.                 Case 1
  24.                   numc = Left(numc, Len(numc) - 1) & Mid(D1, j, 1)
  25.                 Case 3, 11
  26.                   numc = Left(numc, Len(numc) - 1) & Mid(D1, j, 1) & "〇"
  27.                 Case 7
  28.                   If Mid(numc, Len(numc) - 1, 1) <> "亿" Then
  29.                      numc = Left(numc, Len(numc) - 1) & Mid(D1, j, 1) & "〇"
  30.                   End If
  31.                 Case Else
  32.            End Select
  33.          End If
  34.       End If
  35.     Next
  36.     For i = 1 To 4
  37.         numc = Replace(numc, Mid("分角元整", i, 1), "")
  38.     Next
  39.     If Right(numc, 1) = "点" Then numc = Replace(numc, "点", "")
  40.     NumToCN = FuHao & Trim(numc)
  41. End Function
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 12:27 , Processed in 0.037942 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表