ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 498|回复: 9

[已解决] 提取和b列相同的英文字串

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-29 15:05 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 cmo9020 于 2022-12-29 19:46 编辑

请问导师,要从a列 提取和G列相同的英文字符串,到B列 要怎么写? 因为a列最长11码
TEST.rar (11.06 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

发表于 2022-12-29 15:15 | 显示全部楼层
请上传附件,这种问题,一般用循环或者正则表达式处理即可

TA的精华主题

TA的得分主题

发表于 2022-12-29 15:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ykcbf1100 于 2022-12-29 15:33 编辑

没有附件,大致就这个样子吧。
QQ图片20221229153228.png

TA的精华主题

TA的得分主题

发表于 2022-12-29 16:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub 提取关键词()

  2.     Dim arrA(), arrB(), arrC(), str$, key$, r%
  3.    
  4.     arrA = ArrayFromColumn("A")
  5.     arrB = ArrayFromColumn("B")
  6.     arrC = CloneSize(arrA)

  7.     For r = 1 To UBound(arrA)
  8.         str = arrA(r, 1)
  9.         key = FindKeyword(str, arrB)
  10.         arrC(r, 1) = key
  11.     Next
  12.    
  13.     [C:C].ClearContents
  14.     CellWriteArray [C1], arrC

  15. End Sub

  16. Function FindKeyword(str, keys()) As String
  17.     Dim k
  18.    
  19.     For Each k In keys
  20.         If InStr(1, str, k) > 0 Then
  21.             FindKeyword = k
  22.             Exit Function
  23.         End If
  24.     Next
  25. End Function

  26. Function ArrayFromColumn(col)
  27.     Dim endRow As Long
  28.     endRow = Cells(1, col).End(xlDown).Row
  29.     ArrayFromColumn = Cells(1, col).Resize(endRow).Value2
  30. End Function

  31. Function CloneSize(arr())
  32.     ReDim out(LBound(arr) To UBound(arr), LBound(arr, 2) To UBound(arr, 2))
  33.     CloneSize = out
  34. End Function

  35. Sub CellWriteArray(cell As Range, arr())
  36.     cell.Resize(UBound(arr), UBound(arr, 2)).Value2 = arr
  37. End Sub
复制代码

提取A列关键词到C列.zip

17.96 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-29 17:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2022-12-29 15:25
没有附件,大致就这个样子吧。

谢谢导师帮忙,不过有显示数组超出范围问题,,,,,


Sub ykebf()
Dim arr, b
r = Cells(Rows.Count, "a").End(xlUp).Row
arr = Range("a1", Cells(r, "c"))
b = [g2:g7]
For i = 1 To UBound(arr)
s = arr(i, 1)
For j = 0 To UBound(b)
If InStr(s, b(j)) Then
arr(i, 3) = b(j)
End If
Next
Next
Range("a1", Cells(r, "c")) = arr
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-29 17:56 | 显示全部楼层
LIUZHU 发表于 2022-12-29 15:15
请上传附件,这种问题,一般用循环或者正则表达式处理即可

临时用函数mid.ligh去捉...捉的不是很准确
附件以上传,在请导师看一下,谢谢导师

TA的精华主题

TA的得分主题

发表于 2022-12-29 18:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 shiruiqiang 于 2022-12-29 18:20 编辑
cmo9020 发表于 2022-12-29 17:56
临时用函数mid.ligh去捉...捉的不是很准确
附件以上传,在请导师看一下,谢谢导师

就是同时有大小写字母怎么处理?还有“xp”和“xpr”以后面为准吗? image.jpg

TA的精华主题

TA的得分主题

发表于 2022-12-29 18:27 | 显示全部楼层
pq处理                              
2022-12-29_18-26-56.png

TEST.zip

15.08 KB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-29 19:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请楼主参考附件。。。

TEST.rar

15.23 KB, 下载次数: 13

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-29 19:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gwjkkkkk 发表于 2022-12-29 19:11
请楼主参考附件。。。

谢谢导师帮忙~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 00:29 , Processed in 0.051719 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表