我有一個大約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