我有一个大约3,000行的工作表。其中一列包含种族数据,但它是数字格式,而不是文本格式,例如:
我想在VBA中编写一个使用Select Case(或......?)的模块,将此列中的值从整数换成text。有人能告诉我如何做到这一点吗?
答案 0 :(得分:6)
Excel中的非VBA(在我看来更简单)方法是创建一个包含该数据的查找表 - 第一列中的整数,第二列中的文本,然后是数据旁边的列,使用VLOOKUP查找相应的文本。
答案 1 :(得分:5)
下面是一个快速的VBA mashup,它将用替换值替换你的Current Selection值:
Option Explicit
Option Base 1
Public Sub ReplaceData()
Dim RangeCells As Range
Dim LookupArray(4) As String, RangeCell As Range
LookupArray(1) = "Test A"
LookupArray(2) = "Test B"
LookupArray(3) = "Test C"
LookupArray(4) = "Test D"
For Each RangeCell In Selection
If IsNumeric(RangeCell.Value) And RangeCell.Value <= UBound(LookupArray) And RangeCell.Value >= LBound(LookupArray) Then
RangeCell.Value = LookupArray(Val(RangeCell.Value))
End If
Next RangeCell
End Sub
假设:数组索引中包含所有可能的单元格值。否则,选择大小写可能就是您要切换到的大小写。如果你不知道如何切换到那个,请告诉我。
希望这能解决你的问题。
答案 2 :(得分:0)
要做一些类似VLOOKUP的事情,但有了替换,你可以尝试下面的
Option Explicit
Sub ReplaceData()
Dim i As Integer
Dim ABCArray() As Variant, DEFArray As Variant
ABCArray = Array("A", "b", "C")
DEFArray = Array("D", "E", "F")
With ActiveSheet.Range("A:A")
For i = LBound(ABCArray) To UBound(ABCArray)
.Replace What:=ABCArray(i), _
Replacement:=DEFArray(i), _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
MatchCase:=False
Next i
End With
End Sub
我不同意VLOOKUP更好的原因有一个简单的原因:我们使用宏来自动执行重复操作,我认为有人正在寻找宏解决方案,主要是在这种情况下。