是否可以有一个包含公式的单元格并能够将文本输入到同一个单元格中?
Is it possible to have a cell which contains a formula and be able to input text into the same cell?
我正在尝试在 excel 中创建,您可以在单元格中输入姓名首字母,此人的全名会自动出现,这样他们就不必每次都在电子表格中输入全名。我已经设法使用嵌套的 if 语句为不同的人复制这个,这工作正常,但目前它需要两个单元格,我想把它放在同一个单元格上。我注意到,如果我将公式更改为在同一个单元格中,那么它会出现 "circular reference warning" 并且不起作用,如果我尝试在该单元格中输入文本,它会替换公式。只是想知道这可能吗?
=IF(C29="HB", "hazel", IF(C29="AO", "amelia", ""))
这只是一个示例,您可以根据自己的需要进行调整。首字母输入将在 A 列中,因此如果用户在该列的单元格中键入 JW,该单元格将更改为 詹姆斯·拉文斯伍德.
将以下事件宏放入工作表代码区:
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 中填写您的首字母和姓名。
因为它是工作表代码,所以安装和自动使用非常容易:
- 右键单击 Excel window
底部附近的选项卡名称
- select 查看代码 - 这会弹出一个 VBE window
- 粘贴内容并关闭 VBE window
如果您有任何疑虑,请先在试用工作表上尝试一下。
如果您保存工作簿,宏也会随之保存。
如果您使用的 Excel 版本晚于 2003,则必须保存
文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE windows
- 清除代码
- 关闭 VBE window
要了解有关宏的更多信息,请参阅:
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
必须启用宏才能运行!
您可以使用 Excel 的自动更正功能来完成此操作。
转到文件..选项..校对 -
点击自动更正选项..
输入要替换的一对(或三个字母)首字母和要替换首字母的姓名,然后单击“添加”。然后您可以继续添加替换为定义。
以小写 "hb" 或大写 "HB" 输入 Replace 无关紧要,因为条目及其替换都以小写形式添加到定义中。
Excel 这样做是有原因的——它对单元格条目的大小写很敏感。也就是说,如果您输入 "hb",自动更正会将其更改为 "hazel";如果你输入 "Hb" 你会得到 "Hazel"; "HB" 会给你 "HAZEL".
您输入的替换对将仅适用于当前登录的用户名。每次您打开 Excel 和 时都会出现替换对可用于所有打开的工作簿。
如果您希望替换对可供其他用户使用,您需要:
- 手动将替换对添加到所有需要的用户Excel 选项或
- 开发一个宏来使用
Application.AutoCorrect.AddReplacement "hb", "hazel"
添加它们
如果您决定采用宏路径,您可能希望通过在某些工作簿或工作sheet 事件中输入它们来限制定义的范围,并考虑使用 Application.AutoCorrect.DeleteReplacement "hb"
方法。
Workbook_Open
替换项将对所有工作簿中的当前用户可用,并将一直保留到手动或以编程方式删除它们为止。
Workbook_Activate 和 Workbook_Deactivate
如果您在 Workbook_Activate 中使用 AddReplacement 方法并在 Workbook_Deactivate 中使用 DeleteReplacement 方法,则替换将仅对包含代码的工作簿中的 sheet 可用。
Worksheet_Activate 和 Worksheet_Deactivate
将代码放在上述 sheet 事件处理程序中的 sheet 模块中,替换将仅在与该模块对应的 sheet 中可用。
我正在尝试在 excel 中创建,您可以在单元格中输入姓名首字母,此人的全名会自动出现,这样他们就不必每次都在电子表格中输入全名。我已经设法使用嵌套的 if 语句为不同的人复制这个,这工作正常,但目前它需要两个单元格,我想把它放在同一个单元格上。我注意到,如果我将公式更改为在同一个单元格中,那么它会出现 "circular reference warning" 并且不起作用,如果我尝试在该单元格中输入文本,它会替换公式。只是想知道这可能吗?
=IF(C29="HB", "hazel", IF(C29="AO", "amelia", ""))
这只是一个示例,您可以根据自己的需要进行调整。首字母输入将在 A 列中,因此如果用户在该列的单元格中键入 JW,该单元格将更改为 詹姆斯·拉文斯伍德.
将以下事件宏放入工作表代码区:
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 中填写您的首字母和姓名。
因为它是工作表代码,所以安装和自动使用非常容易:
- 右键单击 Excel window 底部附近的选项卡名称
- select 查看代码 - 这会弹出一个 VBE window
- 粘贴内容并关闭 VBE window
如果您有任何疑虑,请先在试用工作表上尝试一下。
如果您保存工作簿,宏也会随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE windows
- 清除代码
- 关闭 VBE window
要了解有关宏的更多信息,请参阅:
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
必须启用宏才能运行!
您可以使用 Excel 的自动更正功能来完成此操作。
转到文件..选项..校对 -
点击自动更正选项..
输入要替换的一对(或三个字母)首字母和要替换首字母的姓名,然后单击“添加”。然后您可以继续添加替换为定义。
以小写 "hb" 或大写 "HB" 输入 Replace 无关紧要,因为条目及其替换都以小写形式添加到定义中。
Excel 这样做是有原因的——它对单元格条目的大小写很敏感。也就是说,如果您输入 "hb",自动更正会将其更改为 "hazel";如果你输入 "Hb" 你会得到 "Hazel"; "HB" 会给你 "HAZEL".
您输入的替换对将仅适用于当前登录的用户名。每次您打开 Excel 和 时都会出现替换对可用于所有打开的工作簿。
如果您希望替换对可供其他用户使用,您需要:
- 手动将替换对添加到所有需要的用户Excel 选项或
- 开发一个宏来使用
Application.AutoCorrect.AddReplacement "hb", "hazel"
添加它们
如果您决定采用宏路径,您可能希望通过在某些工作簿或工作sheet 事件中输入它们来限制定义的范围,并考虑使用 Application.AutoCorrect.DeleteReplacement "hb"
方法。
Workbook_Open 替换项将对所有工作簿中的当前用户可用,并将一直保留到手动或以编程方式删除它们为止。
Workbook_Activate 和 Workbook_Deactivate 如果您在 Workbook_Activate 中使用 AddReplacement 方法并在 Workbook_Deactivate 中使用 DeleteReplacement 方法,则替换将仅对包含代码的工作簿中的 sheet 可用。
Worksheet_Activate 和 Worksheet_Deactivate 将代码放在上述 sheet 事件处理程序中的 sheet 模块中,替换将仅在与该模块对应的 sheet 中可用。