Excel - 如何以编程方式转换存储为文本的数字'数字?

时间:2016-06-17 23:48:44

标签: excel excel-vba excel-formula vba

我正在寻找一个简单的Excel VBA或公式,可以将Excel中的整行转换为存储为文本'的数字。为vlookup原因的实际数字。

有人能指出我正确的方向吗?

6 个答案:

答案 0 :(得分:2)

更好的方法

您应该使用INDEX(MATCH)代替VLOOKUP,因为VLOOKUP会以不可预测的方式运行,从而导致错误,例如您可能遇到的错误。

INDEX ( <return array> , MATCH ( <lookup value> , <lookup array> , 0) )

INDEX MATCH example

使用0作为MATCH的最后一个参数意味着匹配必须准确 Here是关于INDEX(MATCH) - ing

的一些更深入的信息

另外

添加零+0将值转换为数字 这可以(危险地)扩展IFERROR()以将非数字文本转换为零:

=A2+0
=IFERROR(A2+0,0)

对于反向,您可以安排空字符串&""以强制该值为字符串。

注释

如果0未用作MATCH的最后一个参数,它会发现各种意外的“匹配”......更糟糕的是,即使完全匹配,它也可能找到不同的值本。

通常需要做一些额外的工作来确定MATCH查找列中是否存在重复项,否则将返回找到的第一个值(参见示例)。

MATCH的帮助来自here,特别是第三个参数控制的匹配逻辑。

答案 1 :(得分:0)

我确实找到了这个,但是有没有人也有公式?

Sub macro() 
    Range("F:F").Select 'specify the range which suits your purpose
    With Selection 
        Selection.NumberFormat = "General" 
        .Value = .Value 
    End With 
End Sub 

http://www.ozgrid.com/forum/showthread.php?t=64027

答案 2 :(得分:0)

试试这个:

Sub ConvertToNumber()
    Application.ScreenUpdating = False
    Dim cl As Range
    For Each cl In Selection.Cells
        cl.Value = CInt(cl.Value)
    Next cl
    Application.ScreenUpdating = True
End Sub

要使用它,只需用鼠标选择相关的单元格块,然后运行宏(Alt + F8调出对话框)。它将遍历所选范围内的每个单元格,并将其保存的任何值转换为数字。

答案 3 :(得分:0)

我编写了一个自定义的vlookup函数,它不关心数据格式。将它放入VBA中的模块并使用= VLOOK而不是= VLOOKUP

Public Function VLook(sValue As String, rDest As Range, iColNo As Integer)

' custom vlookup that's insensitive to data formats

Dim iLastRow As Long
Dim wsDest As Worksheet

Set wsDest = Sheets(rDest.Parent.Name)

iLastRow = wsDest.Range(wsDest.Cells(100000, rDest.Column).Address).End(xlUp).Row

If iLastRow < rDest.Row + rDest.Rows.Count Then
    For X = rDest.Column To rDest.Column + rDest.Columns.Count
        If wsDest.Cells(100000, X).End(xlUp).Row > iLastRow Then iLastRow = wsDest.Cells(100000, X).End(xlUp).Row
    Next X
End If

sValue = UCase(Application.Clean(Trim(sValue)))

For X = rDest.Row To iLastRow

    If UCase(Application.Clean(Trim(wsDest.Cells(X, rDest.Column)))) = sValue Then
        VLookDM = wsDest.Cells(X, rDest.Column + iColNo - 1)
        Exit For
    End If

Next X

End Function

答案 4 :(得分:0)

我能想到的最简单的方法是使用内置函数= VALUE(TEXT_TO_CONVERT_TO_STRING)。

答案 5 :(得分:0)

如果在vlookup或索引/匹配行之前添加它,这应该可以工作:

{
  _id: "$firebaseUserId",
  owner_id: { 
   $first: "$owner_id"
  },
  testinnn: {
    $first: "$testinnn"
  }
}