Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中将字转换为数字_Vba_Excel - Fatal编程技术网

在VBA中将字转换为数字

在VBA中将字转换为数字,vba,excel,Vba,Excel,在excel中,我有一列需要转换为整数的单词。例如,我有一个行业专栏: 资本货物 清单项目 消费者服务 技术等等 我想用一个整数来代替这些行业 下面是我在VBA中尝试的一些东西,但没有成功。在这里,我尝试在列中循环,如果当前单元格中的单词与前一个单元格中的单词不同,那么我将为其分配一个不同的整数。(但它不起作用) Sub-WordtoNum() 将ws设置为工作表 Dim变量列表 变暗rng1 As范围 暗长 Dim startrow、wsheet、tt为整数 '输入工作表和起始行 '---

在excel中,我有一列需要转换为整数的单词。例如,我有一个行业专栏:

  • 资本货物
  • 清单项目
  • 消费者服务
  • 技术等等
我想用一个整数来代替这些行业

下面是我在VBA中尝试的一些东西,但没有成功。在这里,我尝试在列中循环,如果当前单元格中的单词与前一个单元格中的单词不同,那么我将为其分配一个不同的整数。(但它不起作用)

Sub-WordtoNum()
将ws设置为工作表
Dim变量列表
变暗rng1 As范围
暗长
Dim startrow、wsheet、tt为整数
'输入工作表和起始行
'---------------------------------------
wsheet=2
startrow=2
'---------------------------------------
设置ws=图纸(wsheet)
设置rng1=ws.Range(ws.[a1],ws.Cells(Rows.Count,“A”).End(xlUp))
varList=rng1.Value2
tt=0
对于lngCnt=startrow至UBound(变量列表)
如果varList(lngCnt,2)varList(lngCnt-1,2),那么_
tt=tt+1
varList2(lngCnt,2)=tt
下一个
rng1.Value2=varList
端接头

这段代码主要基于我在最近一篇相关文章中收到的帮助。

为什么不使用内置Excel函数VLOOKUP?它在已排序的列中查找一个单词,并从另一列返回一个值,但返回的行与匹配的行相同

我知道你问的问题是如何在VBA中实现这一点,但是,我不确定你是否真的想使用VBA作为练习,或者只是不知道这个函数?

请:1)向我们展示一个你试图实现的示例。2) 要比“它不起作用”更具体。3) 缩进你的代码,让我们凡人更容易阅读。这次我是为你做的。也就是说,
varList2
在分配给之后既不声明也不使用。你是说
varList(lngCnt,2)=tt
?你的问题需要澄清一下。
Sub WordtoNum()
    Dim ws As Worksheet
    Dim varList
    Dim rng1 As Range
    Dim lngCnt As Long
    Dim startrow, wsheet, tt As Integer

    ' Enter the worksheet and starting row
    '---------------------------------------
    wsheet = 2
    startrow = 2
    '---------------------------------------

    Set ws = Sheets(wsheet)
    Set rng1 = ws.Range(ws.[a1], ws.Cells(Rows.Count, "A").End(xlUp))
    varList = rng1.Value2
    tt = 0

    For lngCnt = startrow To UBound(varList)
        If varList(lngCnt, 2) <> varList(lngCnt - 1, 2) Then _
           tt = tt + 1
        varList2(lngCnt, 2) = tt
    Next
    rng1.Value2 = varList
End Sub