小编dot*_*t12的帖子

从 Excel 单元格中提取固定长度的数字

一些类似命名的线程,但仍然无法解决我的问题。我需要从 Excel 字符串(在我的场景中为 8 位数字)中提取一个固定长度的 NUMBER 值。为此提供了以下 Excel 公式:

=MID(A1,FIND("--------",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"0","-"),"1","-"),"2","-"),"3","-"),"4","-"),"5","-"),"6","-"),"7","-"),"8","-"),"9","-")),8)
Run Code Online (Sandbox Code Playgroud)

它可以完成这项工作,但是我对此有两个问题:

  1. 最重要的是 - 我正在寻找完全匹配。虽然它确实提取了它找到的第一个 8 位数字序列,但我真的只需要8 位数字,这意味着应该忽略 9 位(或更长)数字(因为 7 位数字已经是)。此公式还从较长的数字中提取前 8 位数字。

  2. 不太重要,但只查找以 1 开头的数字会很好。所以,真的只是想提取这个:1??????? 作为数值。因此,像“一12891212一”或“一12891212一”应该被提取,同时12891212 0A或23456789不应该。

如果合理可行,与 VBA 相比,我更喜欢基于 Excel 公式的方法。任何帮助深表感谢!

excel vba excel-formula

3
推荐指数
1
解决办法
1120
查看次数

Excel 表格顶部的新行

我有一段 VBA 代码想要增强。有两个 Excel 表 - ToDoDone。该代码获取ToDo表中的第一行(我使用表标题作为锚单元并向下偏移一行以获取值)。

运行一些其他功能后,我想将此值添加到Done表中,然后从原始ToDo表中删除它。

这一切都有效 - 需要注意的是ListRows.Add函数像往常一样将新行添加到表的底部。有没有办法将新的空行和内容添加到“完成”表的顶部,以便最后处理的值将自上而下而不是自下而上运行?

某些范围倒序函数可能会打乱整个顺序。另外在 .Range(2) 中添加时间戳并始终进行排序对于解决方法来说感觉太混乱(应该有一个更简洁的方法,对吧?)

Sub Data()

    Range("Data_transfer").Value = Range("ToDo_header").Offset(1).Value

    'some irrelevant code runs here

    Set newrow = ActiveSheet.ListObjects("Done").ListRows.Add

    With newrow
    .Range(1) = Range("Data_transfer").Value
    End With

    Range("ToDo_header").Offset(1).Delete

End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba

1
推荐指数
1
解决办法
2689
查看次数

标签 统计

excel ×2

vba ×2

excel-formula ×1