Excel自定义函数求助

不用辅助行和辅助列,用自定义函数,同一行从左到右随机生成26个字母的“超级单词”,从a到z,每个字母只出现一次,有的小写,有的大写。请高手不吝赐教!... 不用辅助行和辅助列,用自定义函数,同一行从左到右随机生成26个字母的“超级单词”,从a到z,每个字母只出现一次,有的小写,有的大写。请高手不吝赐教! 展开
 我来答
阳光上的桥
2022-04-22 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65812
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

程序代码:

使用示例1(帖子要求的长度26的超级单词):

使用示例2(随机长度的随机单词):

程序代码文本(有可能特殊符号被浏览器偷吃,以上图代码为准):

Option Explicit

Function 随机不重复字母串(Optional ByVal n& = 26) As String
Dim a(1 To 26), i&, j&, s$
'初始化
For i = 1 To 26
a(i) = Chr(64 + i)
Next i
'打乱
For i = 1 To 26
j = Int(Rnd() * 26 + 1)
s = a(j)
a(j) = a(1)
a(1) = s
Next i
'随机小写
For i = 1 To 26
j = Int(Rnd() * 26 + 1)
If a(j) < "a" Then a(j) = Chr(Asc(a(j)) + 32)
Next i
'合成和返回
随机不重复字母串 = Left(Join(a, ""), n)
End Function


山桑弓
2022-04-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7793
采纳率:66%
帮助的人:2854万
展开全部
A1中空着,B1中输入
=CHAR(SMALL(IF(COUNTIF($A1:A1,CHAR(ROW(65:90)))=0,ROW(65:90)),RANDBETWEEN(1,27-COLUMN(A:A)))+IF(RAND()>0.5,32,))
同时按下CTRL+SHIFT+ENTER,输入数组公式,再用自动填充柄将B1公式右拉到AA1
可多次按下F9,查看效果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赚财富值好难呀
2022-04-22
知道答主
回答量:7
采纳率:0%
帮助的人:1162
展开全部
选中A2:Z2,输入数组公式=CHAR(CHOOSE(MOD(COLUMN(A1:Z1),2)+1,65,97)+MOD(SMALL(RANDBETWEEN(-A1:Z1,50)/1%+COLUMN(A1:Z1),COLUMN()),100)-1)
三键结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萌新资格证书
2022-04-22 · 作为一个喜欢科学的萌新,路漫漫其修远兮
萌新资格证书
采纳数:32 获赞数:50

向TA提问 私信TA
展开全部

代码视图:


计算结果:

代码如下:

'复制到模块

Function Exchange()

Dim Arr1(25) As String, i%, j, K, Rndrange As Long, Rnd1 As Double

'生成26个英文大写字母

For i = 0 To 25

  Arr1(i) = Chr(65 + i)

Next i

Rndrange = UBound(Arr1)

'交换数组元素位置

For j = 0 To 25

  Randomize (Timer)

  Rnd1 = Int(Rndrange * Rnd)

  K = LCase(Arr1(j))

  Arr1(j) = Arr1(Rnd1)

  Arr1(Rnd1) = K

Next j

Exchange = Join(Arr1) '不重复的数列

End Function


    本回答被提问者采纳
    已赞过 已踩过<
    你对这个回答的评价是?
    评论 收起
    收起 更多回答(2)
    推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

    为你推荐:

    下载百度知道APP,抢鲜体验
    使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
    扫描二维码下载
    ×

    类别

    我们会通过消息、邮箱等方式尽快将举报结果通知您。

    说明

    0/200

    提交
    取消

    辅 助

    模 式