是否有可能有一个包含公式的单元格,并能够将文本输入到同一个单元格?

时间:2015-02-17 16:33:09

标签: excel if-statement excel-formula formula cells

我正在尝试在excel中创建您在单元格中输入姓名缩写,并且该人的全名自动显示,因此他们不必每次都在电子表格中输入他们的全名。我已经设法使用嵌套的if语句为不同的人复制这种方法,但工作正常,但目前它需要两个单元格,我想将它放在同一个单元格上。我注意到,如果我将公式更改为在同一单元格中,那么它会出现“循环引用警告”并且不起作用,如果我尝试在该单元格中输入文本,则它将替换公式。只是想知道这可能吗?

=IF(C29="HB", "hazel", IF(C29="AO", "amelia", ""))

2 个答案:

答案 0 :(得分:0)

这只是一个可以适应您需求的例子。首字母输入将位于 A 列中,因此,如果用户在该列的单元格中键入 JW ,则该单元格将更改为 James Ravenswood

将以下事件宏放在工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range
    ary = Array("JW", "VL", "BJM")
    bry = Array("James Ravenswood", "Victor Laszlo", "Bullwinkle J Moose")
    Set A = Range("A:A")
    If Intersect(Target, A) Is Nothing Then Exit Sub
    v = Target.Value
    For i = LBound(ary) To UBound(ary)
        If v = ary(i) Then
            Application.EnableEvents = False
                Target.Value = bry(i)
            Application.EnableEvents = True
            Exit Sub
        End If
    Next i
End Sub

您需要填写 ary bry ,并附上姓名缩写和姓名。

因为它是工作表代码,所以很容易安装和自动使用:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. 选择查看代码 - 这会打开一个VBE窗口
  3. 粘贴内容并关闭VBE窗口
  4. 如果您有任何疑虑,请先在试用工作表上试用。

    如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除宏:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      要了解有关事件宏(工作表代码)的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/event.htm

      必须启用宏才能使其生效!

答案 1 :(得分:0)

您可以使用Excel的自动更正功能来执行此操作。

转到File..Options..Proofing - Options Proofing dialogue

单击“自动更正选项...”

enter image description here

输入要替换的首字母对(或三元组)以及要替换首字母的名称,然后单击“添加”。然后,您可以继续添加替换定义。

如果输入小写替换“hb”或大写“HB”并不重要,因为条目及其替换都以小写形式添加到定义中。

Excel出于某种原因这样做 - 它对单元格条目的情况很敏感。也就是说,如果输入“hb”,自动更正会将其更改为“hazel”;如果你输入“Hb”,你会得到“Hazel”;而“HB”会给你“HAZEL”。

您输入的替换对将仅适用于当前登录的用户名。每次打开Excel时都会有替换对,并且可用于所有打开的工作簿。

如果您希望替换对可供其他用户使用,则需要:

  • 将替换对手动添加到所有需要的用户Excel选项或
  • 使用Application.AutoCorrect.AddReplacement "hb", "hazel"
  • 开发宏来添加它们

如果您决定沿着宏路径走下去,您可能希望通过在某些工作簿或工作表事件中输入定义来限制定义的范围,并考虑使用Application.AutoCorrect.DeleteReplacement "hb"方法。

<强> Workbook_Open 替换将在所有工作簿中供当前用户使用,并将保留,直到手动或以编程方式删除。

Workbook_Activate和Workbook_Deactivate 如果在Workbook_Activate中使用AddReplacement方法,在Workbook_Deactivate中使用DeleteReplacement方法,则替换只能用于包含代码的工作簿中的工作表。

Worksheet_Activate和Worksheet_Deactivate 将代码放在上面的工作表事件处理程序中的工作表模块中,替换只能在与该模块对应的工作表中使用。