Excel 查找空白值并将其替换为上面单元格中的值

Excel 查找空白值并将其替换为上面单元格中的值,excel,vba,Excel,Vba,我在excel的一列中有大约500000个单元格的数据。数据如下所示: F列: 1528 1660 不适用 1531 1531 不适用 不适用 有没有办法用上面单元格中的值替换所有N/A 如果我一排一排地做这件事,我会花一年的时间。因此,如果您能够通过手动操作避免我浪费一年的生命,请提前感谢您。选项1-您可以在它旁边的列中使用公式 单元格G2中的公式为 =如果(F2=“不适用”,F1,F2) 复制并粘贴到所有G列单元格中。您会注意到,公式在复制后会发生更改 现在高亮显示G列并复制 然后高亮显示F

我在excel的一列中有大约500000个单元格的数据。数据如下所示:

F列:

1528
1660
不适用
1531
1531
不适用
不适用

有没有办法用上面单元格中的值替换所有N/A


如果我一排一排地做这件事,我会花一年的时间。因此,如果您能够通过手动操作避免我浪费一年的生命,请提前感谢您。

选项1-您可以在它旁边的列中使用公式

单元格G2中的公式为 =如果(F2=“不适用”,F1,F2) 复制并粘贴到所有G列单元格中。您会注意到,公式在复制后会发生更改

现在高亮显示G列并复制

然后高亮显示F列,右键单击其中一个选项,从弹出窗口中选择PasteSpecial,然后选择Values only和OK,这将复制G中计算的值,而不是F中的值

在你做这件事之前先做个备份

选项2-您可以使用以下代码执行此操作:

Public Sub FixData()

Dim acell As Range

For Each acell In ActiveSheet.Columns("F").Cells
    If acell.Value = "N/A" And acell.Row <> 1 Then
        acell.Select
        acell.Value = acell.Offset(-1, 0).Value
    End If
Next acell

End Sub
Public Sub-FixData()
Dim acell As系列
对于ActiveSheet.Columns(“F”)单元格中的每个acell
如果acell.Value=“N/A”和acell.Row 1,则
acell.选择
acell.Value=acell.Offset(-1,0).Value
如果结束
下一个亚塞尔
端接头

好吗?

你可以看一下这个,修改为“N/a”:标记为重复,因为一旦N/a被替换为空白,这是同一个问题。我投了反对票,因为许多
SELECT
s会很慢,而且是不必要的。谢谢哈维·弗伦奇-你救了我一年的生命,为此我非常感激。说真的,谢谢你!!!道格。你建议的方法行不通。你会怎么做。如果不比我的好,那就选我吧。PS>select明显在那里,便于测试-任何理解代码的人都可以轻松取出。@HarveyFrench用空格替换所有N/A,然后使用Doug的方法。如果您知道
Select
是多余的,那么为什么不删除它呢?:)实际上,用“xxxzzzaaa”替换空白,用空白替换n/a,然后Dougs方法工作,然后用空白替换“xxxzzzaaa”。我认为添加列更简单,更直观,让您看到将要发生的事情。它也起了作用。