You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中将印地语数字转换为印地语文本?

印地语数字转印地语文本的实现方案

嘿,我明白你现在的需求——Excel自带的格式代码没法直接把数字转换成印地语的基数文本(比如把789变成सात सौ नवासी),不过咱们有两种靠谱的方法可以实现这个功能,一起来看看:

方案1:用VBA自定义函数(单元格直接调用)

这个方法适合需要在单个单元格里快速转换的场景,步骤很简单:

  1. 打开你的Excel文件,按下Alt + F11打开VBA编辑器
  2. 右键点击左侧的工作簿名称,选择「插入」→「模块」
  3. 把下面的代码粘贴到模块里:
Function HindiNumberToText(ByVal num As Double) As String
    ' 定义印地语数字对应的基数文本
    Dim ones() As String, tens() As String, hundreds() As String
    ones = Split("शून्य,एक,दो,तीन,चार,पांच,छह,सात,आठ,नौ", ",")
    tens = Split("", "दस,ग्यारह,बारह,तेरह,चौदह,पंद्रह,सोलह,सत्रह,अठारह,उन्नीस,बीस,तीस,चालीस,पचास,साठ,सत्तर,अस्सी,नब्बे", ",")
    hundreds = Split("", "एक सौ,दो सौ,तीन सौ,चार सौ,पांच सौ,छह सौ,सात सौ,आठ सौ,नौ सौ", ",")
    
    Dim numInt As Long, numStr As String
    numInt = Int(num)
    numStr = CStr(numInt)
    
    ' 处理0的情况
    If numInt = 0 Then
        HindiNumberToText = ones(0)
        Exit Function
    End If
    
    Dim result As String, lenNum As Integer, i As Integer
    lenNum = Len(numStr)
    
    For i = lenNum To 1 Step -1
        Select Case lenNum - i + 1
            ' 处理个位
            Case 1
                If Mid(numStr, i, 1) <> "0" Then
                    result = ones(CInt(Mid(numStr, i, 1))) & " " & result
                End If
            ' 处理十位
            Case 2
                If Mid(numStr, i, 1) = "1" Then
                    ' 10-19的特殊情况
                    result = tens(CInt(Mid(numStr, i, 2))) & " " & result
                    i = i - 1 ' 跳过已处理的个位
                ElseIf Mid(numStr, i, 1) <> "0" Then
                    result = tens(CInt(Mid(numStr, i, 1)) + 9) & " " & result
                End If
            ' 处理百位
            Case 3
                If Mid(numStr, i, 1) <> "0" Then
                    result = hundreds(CInt(Mid(numStr, i, 1))) & " " & result
                End If
            ' 这里可以扩展处理千位、十万位等更大的数字,按需添加即可
        End Select
    Next i
    
    ' 去除首尾多余空格
    HindiNumberToText = Trim(result)
End Function
  1. 保存文件为**启用宏的工作簿(.xlsm)**格式
  2. 回到Excel,在任意单元格输入=HindiNumberToText(789),就能得到你想要的सात सौ नवासी啦

方案2:用Power Query(无宏批量转换)

如果不想启用宏,或者需要批量转换大量数字,Power Query是个不错的选择:

  1. 把需要转换的数字放在一列(比如A列,A2开始是数字)
  2. 选中这列数据,点击「数据」选项卡→「从表格/区域」(Excel会自动把数据导入Power Query编辑器)
  3. 在Power Query编辑器里,点击「添加列」→「自定义列」
  4. 在弹出的对话框里,输入下面的Power Query公式:
let
    // 定义数字到印地语文本的映射
    ones = {"शून्य","एक","दो","तीन","चार","पांच","छह","सात","आठ","नौ"},
    tens = {"","दस","ग्यारह","बारह","तेरह","चौदह","पंद्रह","सोलह","सत्रह","अठारह","उन्नीस","बीस","तीस","चालीस","पचास","साठ","सत्तर","अस्सी","नब्बे"},
    hundreds = {"","एक सौ","दो सौ","तीन सौ","चार सौ","पांच सौ","छह सौ","सात सौ","आठ सौ","नौ सौ"},
    
    // 自定义转换函数
    NumToHindi = (num as number) as text =>
        let
            numInt = Number.IntegerDivide(num, 1),
            numStr = Text.From(numInt),
            len = Text.Length(numStr),
            convert = 
                if numInt = 0 then ones{0}
                else if len = 1 then ones{numInt}
                else if len = 2 then
                    if numInt < 20 then tens{numInt}
                    else
                        let
                            tenPart = Number.IntegerDivide(numInt, 10),
                            onePart = numInt - tenPart*10
                        in
                            tens{tenPart + 9} & (if onePart > 0 then " " & ones{onePart} else "")
                else if len = 3 then
                    let
                        hundredPart = Number.IntegerDivide(numInt, 100),
                        remain = numInt - hundredPart*100
                    in
                        hundreds{hundredPart} & (if remain > 0 then " " & NumToHindi(remain) else "")
                else "" // 可扩展处理更大数字
        in
            convert,
    
    // 应用转换函数到数据列
    AddedHindiText = Table.AddColumn(Source, "印地语文本", each NumToHindi([Column1]))
in
    AddedHindiText
  1. 点击「关闭并上载」,转换后的印地语文本就会出现在新的工作表里啦

两种方法都能实现你的需求,你可以根据自己的场景选择~

内容的提问来源于stack exchange,提问作者shantanuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 18:47:28