2011-03-09 195 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是一個簡單的原因更好的同意:我們做的宏來自動重複的動作,我以爲有人找宏觀解決方案主要在這種情況下。

相關問題