簡體   English   中英

有什么想法為什么VBA在VLookup中不區分大小寫?

[英]Any ideas why VBA isn't being case-sensitive in a VLookup?

我創建了一個VBA宏,以查看單元格E3中的輸入文本字符串,將其拆分為單個字符,然后根據單個字符像素寬度的表VLookup這些字符,並使用命名范圍將其添加到代碼中, “ pw_Table”。

然后,將每個字母的像素寬度相加並顯示在文本輸入框下方的單元格“ Cells(4,5)”中。 擊中返回是為了顯示完整字符串的組合像素寬度總和。

問題在於它不區分大小寫,並且對大寫和小寫字符使用相同的VLookup值。

我見過的所有手冊都說VBA在VLookup上區分大小寫,而我所能找到的就是解決此問題的方法。

但是,對於我的問題,VLookup必須區分大小寫,以確保每個字母的像素寬度正確,例如,“ c”為9像素寬,“ C”為13。

我嘗試對表中的大寫和小寫字符進行重新排序,以查看是否有區別,但是它僅使用遇到的每個字母的第一個值,無論它們是大寫還是小寫。

我以為我可能會使用INDEX,MATCH和EXACT,但看不到如何在VBA中實現它。

這是宏代碼...

Private Sub ReadCharacter()    
    cell_value = ThisWorkbook.Sheets("Pixel-widths").Range("E3")    
    Character_Value = 0    
    For rep = 1 To Len(cell_value)
        Character = Mid(cell_value, rep, 1)        
        On Error GoTo MyErrorHandler        
        Character_Value = Application.WorksheetFunction.VLookup(Character, [pw_Table], 2, 0)          
        Pixel_Width = Pixel_Width + Character_Value        
MyErrorHandler:
        Character_Value = 10
        Resume Next        
    Next rep        
        Cells(4, 5) = Pixel_Width    
End Sub

我在數字方面遇到了一些問題,VBA報告了運行時錯誤1004,但是我添加了一個錯誤陷阱,因為所有0到9的數字都是10像素寬,因此我對此有所懷疑。

我簡直不明白為什么VBA違反了自己的規則。

Vlookup不區分大小寫。

我發現該函數“模擬”一個vlookup,區分大小寫。

Function CaseVLook(FindValue, TableArray As Range, Optional ColumnID As Integer = 1) As Variant
    Dim xCell As Range
    Application.Volatile
    CaseVLook = "Not Found"
    For Each xCell In TableArray.Columns(1).Cells
        If xCell = FindValue Then
            CaseVLook = xCell.Offset(0, ColumnID - 1)
            Exit For
        End If
    Next
End Function

要使用它,只需將其命名為CaseVLook(F1,A1:C7,3)

更多信息在這里

https://www.extendoffice.com/documents/excel/3449-excel-vlookup-case-sensitive-insensitive.html

祝好運

這是另一種方式

Character_Value = Evaluate("INDEX(" & Range("pw_Table").Address(, , , True) & _
    ",MATCH(TRUE,EXACT(INDEX(" & Range("pw_Table").Address(, , , True) & ",0,1),""" & Character & """),0),2)")

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM