我正在尝试在excel中创建您在单元格中输入姓名缩写,并且该人的全名自动显示,因此他们不必每次都在电子表格中输入他们的全名。我已经设法使用嵌套的if语句为不同的人复制这种方法,但工作正常,但目前它需要两个单元格,我想将它放在同一个单元格上。我注意到,如果我将公式更改为在同一单元格中,那么它会出现“循环引用警告”并且不起作用,如果我尝试在该单元格中输入文本,则它将替换公式。只是想知道这可能吗?
=IF(C29="HB", "hazel", IF(C29="AO", "amelia", ""))
答案 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 ,并附上姓名缩写和姓名。
因为它是工作表代码,所以很容易安装和自动使用:
如果您有任何疑虑,请先在试用工作表上试用。
如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除宏:
要了解有关宏的更多信息,请参阅:
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 -
单击“自动更正选项...”
输入要替换的首字母对(或三元组)以及要替换首字母的名称,然后单击“添加”。然后,您可以继续添加替换定义。
如果输入小写替换“hb”或大写“HB”并不重要,因为条目及其替换都以小写形式添加到定义中。
Excel出于某种原因这样做 - 它对单元格条目的情况很敏感。也就是说,如果输入“hb”,自动更正会将其更改为“hazel”;如果你输入“Hb”,你会得到“Hazel”;而“HB”会给你“HAZEL”。
您输入的替换对将仅适用于当前登录的用户名。每次打开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 将代码放在上面的工作表事件处理程序中的工作表模块中,替换只能在与该模块对应的工作表中使用。