我有一些我想从中提取的汽车清单。我本来打算用excel来做这件事,但我想我已经达到了它的极限。
举个例子:
2000 lotus elise
1996 Porsche 911
Nissan Z280 from 1984
我想找到一种提取和打印的方法
2000
1996
1984
分为一列
=TEXTJOIN("",TRUE,IFERROR((MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)*1),""))
但列表中的其他数字可能会使它失效。在这些例子中,我会得到
2000
1996911
1984280
似乎应该有一种方法可以在sql中实现这一点,但我也不知道。希望有任何提示或指点能让我朝着正确的方向前进
4条答案
按热度按时间kcugc4gi1#
您可以使用:
如果可能出现4个以上字符的数字,则可以更安全地检查这些数字的范围:
为了更安全,添加以前使用的
[string-length(.)=4]
以防止“0002000”被接受为一年。生成的数组将溢出到ExcelO365中。在旧版本的excel中,它只返回第一个结果。对你来说这就是你需要的。如果出于任何原因需要数组中的另一个值,请使用
INDEX()
.如果这能激发你对
FILTERXML
,你会发现这很有趣。ccrfmcuu2#
以下是在oracle中测试的查询:
ddl地址:
如果您使用上面的表格:
或
输出:
avkwfej43#
在excel中,可以使用正则表达式创建自定义函数,例如:
如果您不确定如何创建自定义函数,可以在此处阅读
laximzn54#
我不认为任何excel公式都能很好地解决这个问题,因此我建议vba宏a udf(user define function),帮助您解决这个问题。
请注意
将此代码用作模块。
您需要确保microsoft vbscript regular expression 5.5可用作参考。
请按照以下步骤进行检查:
1.在vb编辑器中点击“工具”选项卡,然后点击“引用”。
2.找到vbscript正则表达式5.5并检查它。
将工作簿另存为启用宏。
在单元格d66中输入以下公式。
=GetYear(C66)
您可以根据需要调整公式中的单元格引用。