我知道VBA可能是要走的路,但我相信这可以通过几个基本公式来完成。
我需要" E2"用" A3"中的内容替换(剪切/复制);但只有" D2" ="状态:有效" ......等等单页
黄色和蓝色颜色编码仅适用于此示例,并不代表整个表格
这是一个7,000行电子表格,是一个旧系统生成的报告,我最好通过整理和格式化。
答案 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列。
请确保您是否运行此操作并且您不喜欢结果不保存。