我想在最新的Excel中为单元格添加一些数据验证。我想强制用户输入一个两个字符长的字符串,第一个字符为数字,第二个字符为字母。
e.g。
1m
2m
9w
8y
你会怎么做?
此外,如果输入小写字母,我想在输入完成时将其渲染为大写字母。
答案 0 :(得分:5)
仅对第一部分(无需VBA),您可以使用数据验证:
A1
)Allow:
中,选择自定义 =IF(AND(LEN(A1)=2,ISNUMBER(VALUE(LEFT(A1,1))),ISTEXT(RIGHT(A1,1))),TRUE,FALSE)
您必须输入一个数字后跟一个字母。
顺便说一句,您可以使用UPPERCASE
测试添加支票。
[编辑]另请参阅brettj对类似但优化的解决方案的回答
答案 1 :(得分:2)
杰罗姆,
如果你想解决这个没有 VBA,你可以
如果您需要大写的数据,您可以使用公式=UPPER(A1)
,只要您使用输入。
答案 2 :(得分:2)
选择范围,然后在“数据”菜单中选择“验证”
允许:选择Text length
,最小值= 2,最大值= 2
答案 3 :(得分:2)
对于第一部分,您需要一个公式,例如数据验证
=AND(LEN(A1)=2,ISNUMBER(VALUE(LEFT(A1,1))),CODE(RIGHT(LOWER(A1),1))>=97,CODE(RIGHT(LOWER(A1),1))<=122)
此部分对a到z CODE(RIGHT(LOWER(A1),1))>=97,CODE(RIGHT(LOWER(A1),1))<=122)
ISTEXT(RIGHT(A1,1)))
会将a-z以外的字符验证为文本,因为它是字符串测试,甚至允许使用数字。这就是强制对字符串中第一个位置进行数值计算所需VALUE
(VALUE(LEFT(A1,1)))
部分的原因
答案 4 :(得分:1)
这是一种矫枉过正的方法,实际上只是为了好玩(不要因为VBA带来一点乐趣而贬低我 - 这对知道怎么做实际上很有用)。它将数据验证列表添加到仅允许数字后跟大写字母的范围。我通过完全添加允许的每一个组合来实现这一点:)当然你不必从列表中选择SELECT,但是如果你尝试键入不允许的内容,你会得到蜂鸣器:)
Sub AddValidation()
Dim cell As Range
Dim dict As Object
Set dict = CreateObject("scripting.dictionary")
Dim alphabet As String, numbers As String
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
numbers = "1234567890"
Dim validList As String
For i = 1 To Len(numbers)
For j = 1 To Len(alphabet)
dict.Add Mid$(numbers, i, 1) & Mid$(alphabet, j, 1), 1
Next
Next
validList = Join(dict.keys, ", ")
'Example using B1:B10
With Range("B1:B10").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=validList
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "Invalid data entered"
.ShowInput = True
.ShowError = True
End With
End Sub
答案 5 :(得分:0)
如果你可以使用VBA,那么尝试捕获事件Worksheet_Change:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "You just changed " & Target.Address
' your logic goes here
End Sub