这是Excel问题,
我正在创建一个模板,用于批量导入系统到系统, 其中一列需要输入密码
我想在[密码]单元格上创建一个条件,以便向输入密码有效的详细信息的人员表明
这些是条件:
Passwords must be between 8 and 20 characters.
Must contain one lower & uppercase letter,
and one non-alpha character (a number or a symbol.)
有可能吗?
答案 0 :(得分:4)
让我们把它分解成几个阶段:
密码必须介于8到20个字符之间。
因此,这意味着对于单元格A1
中的值,我们希望LEN(A1)
位于>=8
和<=20
。有几种方法可以做到这一点,我将MEDIAN(8, LEN(A1), 20)=LEN(A1)
作为一个简单的方法。
必须包含一个较低的&amp;大写字母
现在,如果您只是对UPPER(A1)=LOWER(A1)
进行检查,那么您会看到正常的检查忽略了Case ...但是,EXACT
比较会保留大小写!因此,如果单元格EXACT(A1,UPPER(A1))
中的所有字母都是大写字母,则TRUE
将为A1
。对于FALSE
和UPPER
支票,我们希望LOWER
为NOT(OR(EXACT(A1,UPPER(A1)),EXACT(A1,LOWER(A1))))
和一个非字母字符(数字或符号。)
这是棘手的。我将建议使用SUMPRODUCT
来强制计算特定符号列表中AGGREGATE
到FIND
的数组公式。例如,如果您要查找"!", "£" or "$"
中的任何一个,则此代码如果存在则会返回TRUE
,如果不存在,则返回FALSE
:IFERROR(SUMPRODUCT(AGGREGATE(15,6,FIND({"!","£","$"},A1),1)),0)>0
如果您可以使用隐藏工作表,则可以将“符号”放入列中进行检查,例如:IFERROR(SUMPRODUCT(AGGREGATE(15,6,FIND(SuperHiddenSheet!$A$1:$A$50,1)),0)>0
现在,只需将您的3个条件添加到AND
,即可进行测试:
=AND(MEDIAN(8, LEN(A1), 20)=LEN(A1), NOT(OR(EXACT(A1,UPPER(A1)),EXACT(A1,LOWER(A1)))), IFERROR(SUMPRODUCT(AGGREGATE(15,6,FIND({"0","1","2","3","4","5","6","7","8","9","!","£","$","%","^","&","(",")","@","'","~","#","\","/","|","<",">","[","]","{","}","_","-","+","="},A1),1)),0)>0)
(我已将“*”留在“特殊字符”列表中)
答案 1 :(得分:0)
我认为没有办法在公式中找到任何符号,VBA可能会更好。请检查这是否足够好。
@extends('layouts.app')
@section('content')
<a href="/posts" class="btn btn-default">Go Back</a>
<h1>{{ $post->title}}</h1>
<p>{{ $post->body}}</p>
<small>{{ $post->created_at }}</small>
@endsection