VBA – 根据条件改变单元格的值

似乎是一个足够简单的问题,但我在这里找不到答案。 我已经使用了StackOverflow sooo,最后决定自己问一个问题,我确定有人知道答案!

情况:我有一列值与唯一的文件名,如果他们被处理或不。 例如:“20160810_123_a.xml已处理”或“20160810_123_b.xml失败”文件名的长度发生变化,因此不是静态的。 我在不同的报告中使用这些值,只取决于“已处理”或“失败”的值,具体取决于原始内容中的内容。

我猜我需要某种If循环,它会做这样的事情:在范围I:I,如果单元格的值包含“已处理”,用“已处理”replace整个单元格。 如果单元格的值包含“失败”,请将整个单元格replace为“失败”。

提前致谢!

尝试这个

 Sub main() With Worksheets("Conditions") '<--| change "Conditions" to your actual data sheet With .Range("I1", .Cells(.Rows.Count, "I").End(xlUp)).SpecialCells(XlCellType.xlCellTypeConstants) '<--| change "I"s to your actual column index where to search for processed/failed .Replace what:="*processed*", replacement:="Processed", LookAt:=xlWhole, MatchCase:=False .Replace what:="*failed*", replacement:="Failed", LookAt:=xlWhole, MatchCase:=False End With End With End Sub 

这对我工作:

 Option Explicit Sub Test() Dim arr() As Variant Dim i As Long Dim myRange As Range Dim wf As WorksheetFunction Set wf = Application.WorksheetFunction With ActiveSheet Set myRange = .Range(.Cells(1, 1), Cells(.Rows.Count, 1).End(xlUp)) End With arr = myRange For i = 1 To UBound(arr) arr(i, 1) = wf.Proper(Right(arr(i, 1), Len(arr(i, 1)) - wf.Find(" ", arr(i, 1)))) Next i myRange.Offset(0, 1) = arr End Sub