2017-01-14 159 views
-1

在活動範圍選擇上,如何僅查找包含「0」和「#N/A」的單元格並將其替換爲文本「NA」並更改字體顏色爲「紅色」。如何查找特定單元格並用文本替換

這裏是我使用「轉換公式絕對值」和「尋找空單元格把文本‘NA’宏。

sub XConvertToValues() 
    Dim MyRange As Range 
    Dim MyCell As Range 
    Set MyRange = Selection 
    For Each MyCell In MyRange 
     If MyCell.HasFormula Then 
      MyCell.Formula = MyCell.Value 
     End If 
     If IsEmpty(MyCell.Value) = True Then 
      MyCell.Value = "NA" 
     End If 
    Next MyCell 
    End Sub 
+0

可以選擇多少列? – user3598756

+1

是一個VBA代碼的請求?你到目前爲止做了什麼以及你的具體問題在哪裏?也許你會嘗試使用錄音機並使用搜索功能。 – Storax

+0

我剛更新了我的帖子。我應該更具描述性。 –

回答

1

OP的澄清數據格式

使用Replace()Range對象的AutoFilter()方法後,編輯

Sub XConvertToValues() 
    With Selection 
     .Value = .Value '<--| convert all formulas to their values 
     .Replace What:="#N/A", replacement:="NA", LookAt:=xlWhole 
     .Replace What:="0", replacement:="NA", LookAt:=xlWhole 
     If WorksheetFunction.CountIf(.Cells, "NA") > 0 Then 
      .AutoFilter field:=1, Criteria1:="NA" 
      .Resize(IIf(.Cells(1) = "NA", .Rows.count, .Rows.count - 1)).Offset(IIf(.Cells(1) = "NA", 0, 1)).SpecialCells(xlCellTypeVisible).Font.ColorIndex = 3 
      .Parent.AutoFilterMode = False 
     End If 
    End With 
End Sub 
+0

謝謝 - 這也沒有工作。我會再次檢查並回到原點。 –

+0

什麼「沒有工作!」。更明確。並添加數據「之前」和「之後」場景的示例 – user3598756

+0

這僅適用於具有「#N/A」的單元格。如果單元格值爲「0」,則不起作用 –

0

編輯

現在,當你有提供更多的信息,這是可以做到這樣的:

試試這個

Sub ConvertToValues() 

Dim R As Long 
k = Sheet1.Range("A1048576").End(xlUp).Row '-> total rows in column A 

For R = 1 To k 
If IsEmpty(Sheet1.Cells(R, 2)) = True Or Sheet1.Cells(R, 2) = "#NA" Or Sheet1.Cells(R, 2) = "0" Then 
Sheet1.Cells(R, 2).Value = "NA" 
Sheet1.Cells(R, 2).Font.Color = RGB(255, 0, 0) 

End If 
Next R 
End Sub 

enter image description here

+0

謝謝Ambrish - 我真的是這裏的菜鳥。如果能夠找到包含「0」和「#N/A」的單元格並將其替換爲文本「NA」並將字體顏色更改爲「紅色」,您能否看到我的VBA代碼並幫助我? –

+0

再次感謝Ambrish。我已經嘗試過了,這似乎不起作用。我一直無法弄清楚爲什麼 - 我們在這裏錯過了一些東西。 –

+0

請注意'Cells(R,1)'也可以寫成'Cells(R,「A」)'(我最近只是因爲SO上的一些很好的答案才實現的) – YowE3K

0

我是初學者也一樣,這個我可以做什麼,也許它會幫助你,你可以把你想改變或重寫代碼的單元格數量設爲FOR EACH

Dim i As Integer 

On Error Resume Next 

For i = 1 To 20 

cells.Find(What:="0", MatchCase:=False_, SearchFormat:=False).Activate 
ActiveCell.FormulaR1C1 = "NA" 
With Selection.Font 
    .Color = -16776961 
    .TintAndShade = 0 
End With 

cells.Find(What:="#N/A", MatchCase:=False_, SearchFormat:=False).Activate 
ActiveCell.FormulaR1C1 = "NA" 
With Selection.Font 
    .Color = -16776961 
    .TintAndShade = 0 
End With 
Next i 
+0

這僅適用於 - 只要我們改變'隨着Selection.Font 。顏色= -16776961 .TintAndShade = 0 結束With'到'隨着ActiveCell.Font 。顏色= -16776961 .TintAndShade = 0 End With# 這不適用於數字「0」 –