Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel解析地址字符限制_Excel_Parsing_Excel Formula_Limit_Maxlength - Fatal编程技术网

Excel解析地址字符限制

Excel解析地址字符限制,excel,parsing,excel-formula,limit,maxlength,Excel,Parsing,Excel Formula,Limit,Maxlength,我目前正在解析地址。我唯一的要求是每个地址单元(地址1、地址2、地址3等)中不应超过40个字符。问题是,所有的地址都有不同的格式,我想防止单词在中间被切掉。地址示例(G列中): NAAAAAAAAAAAAME,城市街342号,邮编452342,国家 这就是我取得的成绩: Adress3=IF(LEN(G3)>40;RIGHT(G3;LEN(G3)-FIND("*";SUBSTITUTE(G3;" ";"*";LEN(G3)-LEN(SUBSTITUTE(G3;" ";"")))));"")

我目前正在解析地址。我唯一的要求是每个地址单元(地址1、地址2、地址3等)中不应超过40个字符。问题是,所有的地址都有不同的格式,我想防止单词在中间被切掉。地址示例(G列中): NAAAAAAAAAAAAME,城市街342号,邮编452342,国家 这就是我取得的成绩:

Adress3=IF(LEN(G3)>40;RIGHT(G3;LEN(G3)-FIND("*";SUBSTITUTE(G3;" ";"*";LEN(G3)-LEN(SUBSTITUTE(G3;" ";"")))));"")

Adress1==IF(I3<>""; IF(RIGHT(IF(I3<>"";TRIM(SUBSTITUTE(G3; I3; "")); G3);1)=",";LEFT(IF(I3<>"";TRIM(SUBSTITUTE(G3; I3; "")); G3);LEN(IF(I3<>"";TRIM(SUBSTITUTE(G3; I3; "")); G3))-1);IF(I3<>"";TRIM(SUBSTITUTE(G3; I3; "")); G3)); IF(I3<>"";TRIM(SUBSTITUTE(G3; I3; "")); G3))
Adress3=IF(LEN(G3)>40;RIGHT(G3;LEN(G3)-查找(“*”)替换(G3;”;“*”);LEN(G3)-LEN(替换(G3;“;”));”)
地址1==IF(I3“);IF(RIGHT)(IF(I3“);TRIM(替换为G3;I3;”);G3);1=”,“LEFT(IF(I3“);TRIM(替换为G3;I3;”);G3);LEN(IF(I3“;TRIM(替换为G3;I3;”);G3))-1;IF(I3“;TRIM(替换为G3;I3;”;G3));IF(I3“);TRIM(替换为G3;I3;);G3))
这是可行的,但是我需要找到一种方法来多次执行此操作(因为有些地址非常长),以便得到如下结果:

地址1:40个字符

地址2:40个字符

地址3:剩余字符

有没有办法不用VBA解决这个问题?
我希望我讲得有道理,并将感谢任何建议

这三个渐进式公式似乎适用于您的单个示例

G5:K5中的公式为:

=TRIM(LEFT(SUBSTITUTE(G3, " ", REPT(" ", 99), 40-LEN(SUBSTITUTE(LEFT(G3, 40), " ", ""))), 40))
=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(G3, LEN(G5&REPT(" ", 1)), 40), " ", REPT(" ", 99), 40-LEN(SUBSTITUTE(LEFT(MID(G3, LEN(G5&REPT(" ", 1)), 40), 40), " ", ""))), 40)), "")
=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(G3, LEN(G5&H5&REPT(" ", 2)), 40), " ", REPT(" ", 99), 40-LEN(SUBSTITUTE(LEFT(MID(G3, LEN(G5&H5&REPT(" ", 2)), 40), 40), " ", ""))), 40)), "")
=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(G3, LEN(G5&H5&I5&REPT(" ", 3)), 40), " ", REPT(" ", 99), 40-LEN(SUBSTITUTE(LEFT(MID(G3, LEN(G5&H5&I5&REPT(" ", 3)), 40), 40), " ", ""))), 40)), "")
=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(G3, LEN(G5&H5&I5&J5&REPT(" ", 4)), 40), " ", REPT(" ", 99), 40-LEN(SUBSTITUTE(LEFT(MID(G3, LEN(G5&H5&I5&J5&REPT(" ", 4)), 40), 40), " ", ""))), 40)), "")
请注意,H5中的公式取决于G5中的结果,I5中的公式取决于H5和G5中的结果


不确定H5中的尾随逗号可能需要做什么。

能否给出所需输入和输出的示例?不清楚是否所有地址都在一个单元格中?所有地址在一列(G)中都有单独的单元格。输入:NAAAAAAAAAAAAME,342街道,城市,452342邮政编码,国家输出:地址1:NAAAAAAAAAAAAAAAAAAME,342地址2:Streeeeeet,城市,452342邮政编码,地址3:Country每个地址单元格中不应超过40个字符谢谢您的帮助!如果我继续使用公式=If(LEN(G3)>40;RIGHT(G3;LEN(G3)-FIND(““SUBSTITUTE(G3;”);LEN(G3)-LEN(SUBSTITUTE(G3;”;“;”)));”)我最终得到的结果是,每个单元格一个字没有太多意义……非常感谢,我将尝试一下!!如果地址长度不超过120个字符,那么这个公式就非常有效。我如何为剩下的字符(现在被简单地切断)找到公式地址4(地址5)?下一个将使用
MID(G3,LEN(G5&&H5&I5),40)
,下一个将使用
MID(G3,LEN(G5&&H5&I5&J5),40)
(每个位置两处)。每一个开始的位置等于之前所有作品的长度加上每个作品的空间。好的,很有意义!再次感谢您抽出时间!