2011-03-09 194 views
1

我有一个大约3,000行的工作表。其中一个栏包含种族的数据,但它是在数字格式,而不是文本格式,如:Excel VBA将列值替换为另一个值?

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

我想写在VBA模块使用一个选择案例(或...?)这个换出的值从整数列到文本。有人能告诉我如何做到这一点?

+0

@ Mikeb对VLookUp的评论听起来像是最好的选择,但如果它不合适,你可以看看ADO。 – Fionnuala 2011-03-09 15:55:28

回答

4

继承人快速VBA混搭,将与替代品取代当前的选择值:

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 

假设:所有可能的单元格值覆盖数组索引。否则,选择大小写可能是您想要切换到的内容。让我知道如果你不能如何切换到这一点。

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

+0

谢谢。我试过了。我可以将它添加到一个新的模块,还是需要在Sheet1或ThisWorkbook下(我在VBA上很新)?我怎样才能让这个模块在选定的列上运行? – davemackey 2011-03-09 16:41:19

+0

好吧,我把它放在一个模块中,然后使用运行宏对话框运行它,同时我在表格中设置了所需的选择。可能是最简单的方法。或者你可以在'RangeCells as Range'之后用一个'Set RangeCells = Sheet1.Range(“A1:A4”)'来强制编码RangeCells变量的范围,行 – Maverik 2011-03-09 16:49:28

+0

真棒,谢谢!我现在遇到的唯一问题是当我从行RangerCell.Value = LookupArray(RangeCell.Value) – davemackey 2011-03-09 16:54:28

6

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

+1

对!无需为VBA – 2011-03-09 15:56:33

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是一个简单的原因更好的同意:我们做的宏来自动重复的动作,我以为有人找宏观解决方案主要在这种情况下。

相关问题