发布网友 发布时间:2023-09-18 21:29
共3个回答
热心网友 时间:2024-02-01 13:58
帮你梳理了一下,你看看是不是这个情况:
SheetX='D:\常用文件\[123.xls]Sheet1'
$A:$C=$A$1:$C$65536
vFind21_1=VLOOKUP(MID(A1,21,3),SheetX!$A:$C,2,FALSE)
vFind24_1=VLOOKUP(MID(A1,24,3),SheetX!$A:$C,2,FALSE)
vFind21_2=VLOOKUP(MID(A1,SEARCH(CHAR(10),A1)+21,3),SheetX!$A:$C,2,FALSE)
vFind24_2=VLOOKUP(MID(A1,SEARCH(CHAR(10),A1)+24,3),SheetX!$A:$C,2,FALSE)
XINDE=IF(
ISERROR(SEARCH(CHAR(10),A1)),
IFERROR(vFind21&"-"&vFind24_1,""),
IFERROR(vFind21&"-"&vFind24_1&
CHAR(10)&
vFind21_2&"-"&vFind24_2,"")
)
也就是,
A1内容只有一行(没有自动换行)
在SheetX的A列查找A1中位置21~23、24~26的两段值,都找到,公式返回对应的B列值,并用【-】连接;如果找不到,返回空。
A1内容有两行(有自动换行)
则把这两行都做相同的处理,并返回两行数据,任何一段找不到,则返回空
以上,是不是这个XINDE函数的需求?
热心网友 时间:2024-02-01 13:58
这公式看的就头大....追答
1、要是想在VBA中引用Excel里的函数,跟你上边那个写法是一样的。
2、VBA中引用未打开的工作表大致代码如下
Dim Wb As Workbook建议你最好能把你公式到底想实现什么目的叙述出来,如果文字说不明白再上个图辅助一下,既然你都想用VBA了,为什么还非要在VBA中嵌套的写公式呢?这就像你拿把手*,本来一扣扳机就能把人打死,但你非要拿手*当板砖用,并且还不如板砖好用...
就像你这个,既然你要用VBA就没必要非去引用Excel函数并嵌套的写,如果你非要嵌套的写还不如不用VBA呢。
热心网友 时间:2024-02-01 13:58
你想要干什么 我可以帮你写个vba追问我需要自定义一个函数,函数名字是 XINDE,目的是得到B1原公式返回的结果: