'自定义公式-按ALT+F11-插入-模块-粘贴代码-将表格另存为启用宏的格式
Function HB(rng, Optional ByVal fgf As String = "|")
For Each cel In rng
If cel <> "" Then p = p & fgf & cel
Next
HB = Mid(p, Len(fgf) + 1)
End Function
这样用也是可以的
追问你这个自定义函数功能和PHONETIC一模一样的,虽说可以对手动敲的数组进行操作,但是不能对公式计算得到的数组进行操作,还是不得行啊
公式计算得到的数组结果一般都是在单元格内显示value#,要点进去按F9显示为数组,就是该如何从这个value#里面提取出数组的值合并在一起
追答你的目的是为了组合你这个数组里的元素,可以用自定义公式代替你的数组公式,在源头上进行组合
追问我不会用vb,唉
追答表发我,写好给你,你能用就行。
关键是这些数组分离不出来,只能按F9显示,顺便说一下试了那个small也不能直接对数组使用,VBA也不会
追答你用的什么版本? 2019以上的版本有textjoin函数,可以解决内存数组的文本合并问题。
但是低版本不行,低版本的CONCATENATE函数跟 & 是一样的,只能选择单元格,不能处理内存数组。PHONETIC处理拼音的,也是只能引用位置,且不能跳单元格。
small函数可以对数组使用,需要把这个数组对应序列,然后根据序列再用small处理,总之这个公式要反复提取好几遍才可以的。你可以照这个思路试试。如果不行,欢迎继续提问。具体的需要你的原表。复杂的公式不免费。我这里VBA和复杂公式都可以写,但是要根据具体情况。
另外,如果你还是想自己处理,建议用辅助表,做一个辅助表,把数组公式放进去,然后再用PHONETIC处理就好了,前提是里边不要有数字,PHONETIC无法处理数字和时间信息,只能处理字符串。
我是2016版的,把数组做成序列有序分布在N列中是可以的,但是excel表格这里行数太多,导致列数最多只能300多列,无法用small判断超过300列的数据
追答把不符合条件是序列处理掉,只留符合条件的序列。再用small找,不用找300,只用找前边符合条件的就可以了。
如果你经常做数组公式,应该理解这个的。数组中不超过35536个元素就没问题。
那怎么去掉不符合条件的序列呢,顺便说一下,我这个数组里面有值的全是符合条件的,我就想去掉那些没有值的
追答不是,是核对一下序列号,符合条件的返回序列号,不符合条件的不返回序列号,然后序列号是有大小的,可以用small提取,然后在根据用small提取到的序列号,求对应的值。
因为无法直接合并,数组中的的空值也无法处理,所以只能用这种迂回的方案来解决。思路是这样,但是公式写起来很累。你可以好好想一想。
用excel365最新版和WPS2019有textjoin函数,excel2019应该也支持,我没试过,就可以不用这么累了,你得出这个数组就可以直接用textjoin来合并。但是没有这个函数的就得用迂回的方法来解决。