deepseek年夜模子能够辅佐咱们轻快处置许多庞大的成就,正在EXCEL中一点儿瞅似很简朴的功用,正在誊写公式或者VBA,M函数等的时候会比力庞大,以至于一点儿逻辑干系皆很易理浑,这时候咱们能够借帮强大的deepseek,只要输出相干提醒词汇,AI即可辅佐咱们轻快完毕所需的功用。正在此以一个简朴的功用举例,正在A列中寄存了一系列的数据,数据用英文逗号离隔,请求将数据序列截至收缩(持续的数据用开端数减破合号减完毕数暗示,零丁的数据则零丁显现,数据之间用逗号离隔,好比:1,2,4,5,6,8,9收缩成: 1-3,5-7,9-11),正在理论事情中咱们可以更多的是脚动截至增加,如许操纵是能够完毕,但是服从高,并且也简单堕落,正在此咱们借帮deepseek年夜模子去完毕该功用。起首准备表格(以下图),将表格动作附件上传到deepseek,而后输出提醒词汇:“附件表格A列有一串递加的数字序列字符串,为了便利察看纪律,现需要将此中的 持续部门截至收缩,成果如B列所示。请按照请求成立模子完毕该收缩功用。”,部分如截图。留神挑选深度思考(R1)
阐发完毕后deepseek给出了python完毕方法,以下图:这类方法没有是咱们念要的,交着追问:excel可否有函数能够完毕该功用?
深度思考后deepseek给出了三种办法,以下截图:
交下即是将各办法复造,到excel表格中截至尝试,办法一尝试后前去毛病值#CALC!,持续追问,提醒词汇:办法一前去毛病值“#CALC!”。deepseek给出改正后的公式:
=IF(A2="", "",
TEXTJOIN(",", TRUE,
LET(
nums, FILTERXML("<a><b>"&SUBSTITUTE(A2,",","</b><b>")&"</b></a>","//b"),
count, ROWS(nums),
seq, SEQUENCE(count),
vals, --nums,
diffs, IF(seq=1,1, vals-INDEX(vals,seq-1)),
starts, FILTER(seq, (seq=1) + (diffs>1)),
ends, IF(ROWS(starts)=1, count,
VSTACK(DROP(starts,1)-1, count)),
MAP(starts, ends, LAMBDA(s,e,
IF(s=e, INDEX(vals,s),
INDEX(vals,s)&"-"&INDEX(vals,e)))
)
)
)
将公式复造到excel 单位格C2中,背下拖拽复造,获得了念要的成果,以下图:
共时deepseek也给出了兼容的VBA自界说函数,以下图
残破代码为:
Function CompressNumbers(inputStr As String) As String
Dim nums() As String
Dim numList() As Long
Dim i As Long, startVal As Long, endVal As Long
Dim result As String, count As Long
'联系 输出字符串
nums = Split(inputStr, ",")
count = UBound(nums)
If count < 0 Then Exit Function
' 变换为数字数组
ReDim numList(count)
For i = 0 To count
numList(i) = Val(Trim(nums(i)))
Next i
' 收缩序列
i = 0
Do While i <= count
startVal = numList(i)
endVal = startVal
' 查找持续序列
Do While i < count
If numList(i + 1) = numList(i) + 1 Then
endVal = numList(i + 1)
i = i + 1
Else
Exit Do
End If
Loop
' 增加到成果
If result <> "" Then result = result & ","
If startVal = endVal Then
result = result & startVal
Else
result = result & startVal & "-" & endVal
End If
i = i + 1
Loop
CompressNumbers = result
End Function
按alt+F11键,翻开VBA编纂器,面打菜单栏“拔出 ”-“模块”,这时候会主动创立一个模块,将deepseek天生的VBA自界说函数代码复造粘揭到模块,以下图:
封闭VBA编纂器,回到excel界里,正在D2单位格输出自界说的函数CompressSequence(输出前三个字母就能够进去,只要挑选便可),挑选数据系列地点单位格,公式立刻前去成果,以下图:超等表中使用公式时参数用的是[@列名]也即是指背列名列,一般表中的参数为具体的单位格,公式需背下复造。超等表中公式会主动添补,无需拖动复造,共时增加新数据时公式也会主动添补。
交下来考证powerquery中的方法,按下图步调将表格导进powerquery。
加入后将数据系列的范例改成文原
面打初级编纂器,加入M代码编纂界里,将deepseek天生的代码复造粘揭笼盖本有代码,以下图
此时,M函数报错“Expression.SyntaxError: 应为令牌”,将此毛病动作提醒词汇,持续追问,以下图
思考后deepseek给出新的语句;
let
// 步调1:获得数据
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], // 保证那里的表名取理论表名不合
// 步调2:增加自界说列处置收缩逻辑
增加自界说列 = Table.AddColumn(源, "收缩成果", each
let
//联系 字符串并变换为数字列表
数字列表 = List.Transform(
List.RemoveItems(Text.Split([数字序列], ","), {""}),
each Number.From(Text.Trim(_))
),
// 保证列表有序(固然输出该当是递加的)
有序列表 = List.Sort(数字列表),
// 使用List.Accumulate截至分组处置
分组成果 = List.Accumulate(
// 从第两个元艳开端处置
List.RemoveFirstN(有序列表, 1),
// 初初形状:{目前肇端值,以后 完毕值,后果 列表}
{有序列表{0}, 有序列表{0}, {}},
(state, current) =>
let
上一个完毕值 = state{1},
目前肇端值 = state{0},
成果列表 = state{2},
//反省 可否持续
可否持续 = current = 上一个完毕值 + 1
in
if 可否持续 then
// 持续:革新完毕值
{目前肇端值, current,后果 列表}
else
// 没有持续:增加目前组,开端新组
let
新组 = if以后 肇端值 = 上一个完毕值 then
Text.From(目前肇端值)
else
Text.From(目前肇端值) & "-" & Text.From(上一个完毕值),
革新后的成果列表 =后果 列表 & {新组}
in
{current, current, 革新后的成果列表}
),
// 增加最初一组
最初一组 = if 分组成果{0} = 分组成果{1} then
Text.From(分组成果{0})
else
Text.From(分组成果{0}) & "-" & Text.From(分组成果{1}),
统统组 = 分组成果{2} & {最初一组},
// 拉拢终极成果
终极成果 = Text.Combine(统统组, ",")
in
终极成果
),
// 步调3:简略本初列(可选)
简略本初列 = Table.RemoveColumns(增加自界说列, {"数字序列"})
in
简略本初列
将新的语句复造粘揭笼盖本来的M语句,此时语句已报错,以下图
面打完毕,此时powerquery中前去函数施行的成果,以下图:成果也是咱们念要的,
面打封闭并上载,导进数据对于话框当选择表-现有事情表,面打肯定,以下图:
天生的成果就前去到了咱们指定的职位,以下图:
交下来,将上述多少种办法获得的成果搁正在共同截至比对于,以下图
从图中能够瞅出A5单位的数据序列没有是按降序排序的,IF函数前去成果明显是没有准确的,分析该函数对于数据序列的挨次有严峻请求,必需降序排序,别的2种办法的皆是不成就的。
交下来咱们截至深度思考,上边的数据系列皆是正在一个单位格中,假设是搁正在一列差别的止中呢?此时用VBA自界说函数的第一种方法,即使使用textjoin函数将各个数据跟尾也不克不及前去准确值,因为它的参数是一个单位格,兼容版的VBA函数能够前去获得的成果(参数为数组字符串),但是当数据没有是降序排序时,前去的成果也没有是咱们念要的,以下图;
C13单位格中的公式:
=CompressNumbers(TEXTJOIN(",",,SORT(A13:A22,,1))),将数据用sort函数截至降序排序,而后再截至跟尾,最初使用自界说函数截至收缩,成果明显是咱们念要的。
来日诰日咱们用一个小小真例分析了deepseek年夜模子正在一样平常成就处置时的使用,从使用的历程能够瞅出,因为各圆里启事(好比硬件版原等)deepseek天生的代码纷歧定能前去咱们念要的成果,当呈现成就时,能够将成就动作提醒词汇持续截至追问,追问后天生的代码再截至尝试,曲到前去念要的成果。所有成就的处置皆是一个循序渐进的历程,正在处置成就的过程当中需要咱们不竭的截至尝试,纠偏偏。那个小小的例子期望对于各人使用deepseek时有所辅佐。 欢送各人正在批评区截至会商。
|