如果/然后/替换公式

时间:2014-10-09 15:59:11

标签: excel replace formula

我知道VBA可能是要走的路,但我相信这可以通过几个基本公式来完成。

My data

我需要" E2"用" A3"中的内容替换(剪切/复制);但只有" D2" ="状态:有效" ......等等单页

黄色和蓝色颜色编码仅适用于此示例,并不代表整个表格

这是一个7,000行电子表格,是一个旧系统生成的报告,我最好通过整理和格式化。

2 个答案:

答案 0 :(得分:0)

从单元格F

开始尝试列F2

=if(AND(E2="",D2="Status: Active"), A2, E2)

这将测试D2是否有"状态:有效"如果是,它将从A2中提取值。如果不是,那么它将使用E2

中已有的地址

正如您的评论中所解释的那样,当F接受其中的值(剪切/粘贴)时,您正在寻找A为空白...公式无法影响另一个单元格,但是......您可以添加在B之后插入的新列A,并在其中添加以下公式:=if(A2<>G2, "", A2)。然后隐藏列A。然后,新B列只会在插入新列之前显示列A(以前为列G)时显示列F的值)。

你也可以通过VBA完成所有这些工作,但是当一些简单的公式可以帮助你时,这似乎更值得付出。

答案 1 :(得分:0)

如果您希望列A为空,您可以尝试使用此宏:

Option Explicit

Sub SwapCols()
    Dim oWs As Worksheet
    Dim lRowNum As Long
    Dim i As Long

    Set oWs = ActiveWorkbook.Worksheets("Sheet1")

    lRowNum = oWs.Range("A2").End(xlDown).Row

    For i = 2 To lRowNum

        If oWs.Range("D" & CStr(i)).Value = "Status:ACTIVE" Then

            oWs.Range("E" & CStr(i)).Value = oWs.Range("A" & CStr(i)).Value
            oWs.Range("A" & CStr(i)).Value = Null

        End If

    Next i
End Sub

确保将"Sheet1"替换为工作表的名称。宏基本上检查D列中的单元格是否具有值"Status:ACTIVE",如果是,它将A列中的相应单元格复制到E列。

请确保您是否运行此操作并且您不喜欢结果不保存。