Excel VBA将列值replace为另一个值?

我有一个大约3000行的工作表。 其中一列包含种族数据,但它是数字格式,而不是文本格式,例如:

  • 1 =美洲印第安人或阿拉斯加原住民
  • 2 =亚裔,亚裔美国人或太平洋岛民
  • 3 =非洲裔美国人或黑人
  • 4 =墨西哥或墨西哥美国人

我想在VBA中编写一个使用Select Case(或…?)的模块将这个列中的值从整数换成文本。 有人可以告诉我如何做到这一点?

下面是一个快速的VBA混搭,将用替代品replace您的当前select值:

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 

假设:所有可能的单元格值都在数组索引中。 否则,select大概是你想要切换到的。 让我知道如果你不能如何切换到。

希望这可以解决你的问题。

在Excel中,非VBA(在我看来更简单)方法是创build一个包含该数据的查找表 – 第一列中的整数和第二列中的文本,然后在数据旁边的列中使用VLOOKUPfind相应的文字。

要做类似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更好,原因很简单:我们使用macros来自动执行重复动作,而且我假定有人正在寻找macros观解决scheme,大多数情况下是这样的。