【问题标题】:Using an if formula in order to write in other cell使用 if 公式在其他单元格中写入
【发布时间】:2017-06-29 07:05:33
【问题描述】:

我有一个带有三个值(打开、关闭、待处理)的下拉列表的单元格。我想制定一个公式,以确保在报告问题时打开状态更改。使用此公式=if("e2<>0,"open","") 可以毫无问题地工作,但我不想使用下拉列表更改单元格的值,所以我需要类似=if("e2<>0,i2="open","") 的东西。

有没有办法在不使用 vba 的情况下做到这一点?如果我想实时更新,我怎么能用 vba 做到这一点?当我将任何数据放入 e2 时,i2 应该是打开的,无需重新打开文件。

【问题讨论】:

  • 您不想将公式直接插入到要更改的单元格中的任何特殊原因(在本例中为I2)?
  • 因为是一个包含三个值的下拉列表(打开关闭待处理),我希望使用该表的任何人都可以更改它。我现在想这样做的唯一原因是因为人们忘记输入“打开”状态,并且已经制作了一个过滤器来显示仍然打开或待处理的每个问题,所以如果人们忘记将是一个问题。如果我将公式放在同一个单元格中,下拉列表会丢失,或者它是一种方法,所以使用它的人只能看到下拉列表并且公式也到位?谢谢
  • =IF(AND(E20,I2="open"),"","") 像这样?
  • 虽然我理解你的意思,但这不会损害数据的正确性吗?假设用户想要将单元格的值更改为“待处理”并且您有该代码,它将很快将其更改为“打开”,从而损害整个数据。您不应该允许用户更改应该自动更改的内容。如果你想确保数据被插入并且你知道它应该是哪个数据,只需将公式放在单元格中并锁定它,这样用户就不会弄乱它
  • 是的,但如果我知道如何做到这一点,如果我稍后提出更多条件,例如如果 e2 中有数据并且 i2 没有关闭或待处理打开(至少我希望管理不善:D ) PS: 打算试试那个 thx ricky

标签: vba if-statement formula


【解决方案1】:

你应该使用 VBA

在相关的工作表代码窗格中输入此代码

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Address = "$E$2" And Target.Value <> 1 Then Range("I2").Value = "open"
End Sub

【讨论】:

  • 谢谢。无法将其作为一个循环,因此它会占用该列并四处播放以将其置于其余条件下。那么用公式是不可能的?
  • 嗯,我试图设置更多条件,但它不起作用,如果在那个里面放另一个,或者在最后放另一个,是不可能的?我想检查是否已经在 i2 中写入“已关闭”或“待处理”
  • 详细说明你的目标是什么
  • 每当在 e2 上写入某些内容(该部分与该代码完美配合)时,我都想在 i2“open”中写入,但是为了在 i2 上写入“open”,该单元格不能已经被填充“关闭”或“待定”。所以我需要在它写打开之前检查它是关闭还是挂起,虽然添加两个 if 很容易,但它不起作用。谢谢
  • 如果 Target.Address = "$E$2" And Target.Value 1 And Range("I2").Value "closed" And Range("I2").Value "pending" 然后 Range("I2").Value = "open"
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 2022-01-14
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多