2012-10-24 224 views
0

我想对Excel VBA中的一列数据运行简单的操作。如果列B中的单元格以'N'之前的字母开头,则该单元格没有任何反应。如果单元格以字母“N”开头或之后(在字母表中),则用“!!!!!”替换单元格内容。Excel VBA:使用那些相同单元格的内容执行覆盖单元格内容的功能

这里是我的代码,正确适用这另一个柱:

Range("C1", Range("C1").End(xlDown)).Value = "=IF(LEFT(A1,1)<""N"",B1,""!!!!!"")" 

这工作得很好,使C列包含正确的输出。但是,为了替换B列,我需要将列C转换为文字值,然后删除列B中的所有列。

这些额外的步骤看起来有点不必要和麻烦。有没有办法将公式直接应用于B列,而无需将值分配给单独的列,然后销毁原始列B?

+0

您可以在B中放置公式,然后将该值粘贴回B本身。 – Passerby

+0

对不起,我没有得到你的观点 - 测试 - 看起来工作正常。也许你应该提供一些数据例子。 – Jook

+0

你的代码将这个设置为colularC,这个公式将反映col B的值或“!!!!”的值。 - 如果您想直接更改B,则可以执行vba中的公式,然后替换col B的值。 – Jook

回答

2

将myRng设置为您需要的任意数量的行。它似乎不适用于一个完整的专栏。

Sub CaptainProgsSub() 

Dim myRng As Range, cell As Range 
Set myRng = Range("B1:B100") 

For Each cell In myRng 
    If Left(Range("B" & cell.row), 1) > "N" Then Range("B" & cell.row) = "!!!!!" 
Next cell 

End Sub 
相关问题