我有一个大约3,000行的工作表。其中一个栏包含种族的数据,但它是在数字格式,而不是文本格式,如:Excel VBA将列值替换为另一个值?
- 1 =美洲印第安人或阿拉斯加原住民
- 2 =亚裔,亚裔或太平洋岛民
- 3 =非洲裔或黑人
- 4 =墨西哥或美国墨西哥
我想写在VBA模块使用一个选择案例(或...?)这个换出的值从整数列到文本。有人能告诉我如何做到这一点?
我有一个大约3,000行的工作表。其中一个栏包含种族的数据,但它是在数字格式,而不是文本格式,如:Excel VBA将列值替换为另一个值?
我想写在VBA模块使用一个选择案例(或...?)这个换出的值从整数列到文本。有人能告诉我如何做到这一点?
继承人快速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
假设:所有可能的单元格值覆盖数组索引。否则,选择大小写可能是您想要切换到的内容。让我知道如果你不能如何切换到这一点。
希望这可以解决您的问题。
谢谢。我试过了。我可以将它添加到一个新的模块,还是需要在Sheet1或ThisWorkbook下(我在VBA上很新)?我怎样才能让这个模块在选定的列上运行? – davemackey 2011-03-09 16:41:19
好吧,我把它放在一个模块中,然后使用运行宏对话框运行它,同时我在表格中设置了所需的选择。可能是最简单的方法。或者你可以在'RangeCells as Range'之后用一个'Set RangeCells = Sheet1.Range(“A1:A4”)'来强制编码RangeCells变量的范围,行 – Maverik 2011-03-09 16:49:28
真棒,谢谢!我现在遇到的唯一问题是当我从行RangerCell.Value = LookupArray(RangeCell.Value) – davemackey 2011-03-09 16:54:28
在Excel中,非VBA(在我看来更简单)方法是创建一个包含该数据的查找表 - 第一列中的整数和第二列中的文本,然后在您的旁边列中数据,使用VLOOKUP查找相应的文本。
对!无需为VBA – 2011-03-09 15:56:33
像做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是一个简单的原因更好的同意:我们做的宏来自动重复的动作,我以为有人找宏观解决方案主要在这种情况下。
@ Mikeb对VLookUp的评论听起来像是最好的选择,但如果它不合适,你可以看看ADO。 – Fionnuala 2011-03-09 15:55:28