excel 单元格 提取连续数字 提取连续文字

今天遇到了个公式问题:

     已知表中a列有数字和文字,要提取单元格中前面连续的数字...

 

用的挺笨的一个方法:

   1 在b2中写公式:

=IF(ISERROR(VALUE(LEFT(A2,1))),"",IF(ISERROR(VALUE(LEFT(A2,2))),VALUE(LEFT(A2,1)),IF(ISERROR(VALUE(LEFT(A2,3))),VALUE(LEFT(A2,2)),IF(ISERROR(VALUE(LEFT(A2,4))),VALUE(LEFT(A2,3)),IF(ISERROR(VALUE(LEFT(A2,5))),VALUE(LEFT(A2,4)),"")))))

    由于嵌套的限制,只能写到前4位,在b3中新加公式:

=IF(B2="",IF(ISERROR(VALUE(LEFT(A2,5))),"前面无数字",VALUE(LEFT(A2,5))),B2)

    如果有需要就在b3的基础上再加多层判断

  2另

一个提取连续文字的公式:(对b2进行操作)

=MID(B2,MATCH(1,--ISERROR(--IF(CODE(字)>1000,字,)),),SUM(--ISERROR(--IF(CODE(字)>1000,字,))))

注意,要求文字单独在一起,不能分块

VB是一种编程语言,可以利用它来批量提取多个Excel单元格的数据。以下是一个简单的示例: ``` Sub 批量提取数据() Dim 文件路径 As String Dim 表格 As Workbook Dim 工作表 As Worksheet Dim 单元格 As Range Dim 行数 As Integer Dim 列数 As Integer ' 设置文件路径,这里假设多个Excel文件在同一文件夹下 文件路径 = "C:\文件夹路径\" ' 循环遍历所有文件 文件名 = Dir(文件路径 & "*.xlsx") Do While 文件名 <> "" ' 打开文件 Set 表格 = Workbooks.Open(文件路径 & 文件名) ' 遍历工作表 For Each 工作表 In 表格.Sheets 行数 = 工作表.Cells(Rows.Count, 1).End(xlUp).Row 列数 = 工作表.Cells(1, Columns.Count).End(xlToLeft).Column ' 提取数据 For Each 单元格 In 工作表.Range(工作表.Cells(1, 1), 工作表.Cells(行数, 列数)) ' 在这里处理单元格数据,可以根据需要做任何操作,比如复制到另一个工作表或保存到数组等 ' 示例中只打印数据到Immediate窗口 Debug.Print 单元格.Value Next 单元格 Next 工作表 ' 关闭文件 表格.Close ' 继续下一个文件 文件名 = Dir Loop End Sub ``` 以上示例使用VB编写了一个名为"批量提取数据"的子过程。程序首先设置了一个文件路径变量,指向存放多个Excel文件的文件夹。然后,通过使用`Dir`函数遍历该文件夹下的所有.xlsx文件。对于每个文件,程序打开并遍历其中的工作表。然后,使用`Rows.Count`和`Columns.Count`函数确定每个工作表的行数和列数。接下来,程序使用嵌套的`For Each`循环遍历每个单元格,可以在循环中对单元格进行任何需要的操作。 请注意,以上示例只是展示VB如何批量提取多个Excel单元格数据的一种方式,根据实际需求,您可能需要根据具体情况进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值