请教VBA高手EXCEL表格无规律数据中提取人名
Option Explicit
Sub fjs()
Dim i%, p%, k, j
With Application
.ScreenUpdating = False
End With
Range("F2", Range("F65536").End(xlUp)).Select
Selection.Copy
Range("E65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Range("E1", Range("E65536").End(xlUp)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("F1"), Unique:=True
Columns("F:G").Select
Range("G1").Activate
Selection.Sort Key1:=Range("G1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
For i = 2 To Sheet1.UsedRange.Rows.Count
k = Cells(i, 3)
Cells(i, 5) = "": Cells(i, 4) = ""
For p = 2 To Range("F65536").End(xlUp).Row
j = Cells(p, 6)
If InStr(k, j) 0 Then
If Cells(i, 5) "" Then Cells(i, 5) = Cells(i, 5) & "、" & j Else Cells(i, 5) = j
k = Replace(k, j, "")
Cells(i, 4) = k
End If
Next
Next
With Application
.ScreenUpdating = True
End With
End Sub
先复制要提取的区域,
然后把那一列的宽度拉到一个字的大小
在点填充——两端对齐,效果如图
点数据——分列——下一步——下一步——完成
点查找——定位条件——常量——只勾选【文本】
都那很长的一列,右击,然后点删除——下方单元格上移,效果如图
7
最后把只有一个字宽的那一列拉宽一点,数字就显示出来了
假设你的表如图:
Sub fjs()
With Application
.ScreenUpdating = False
End With
For i = 2 To Sheet1.UsedRange.Rows.Count
k = Cells(i, 3)
For p = 2 To Sheet1.UsedRange.Rows.Count
j = Cells(p, 6)
If InStr(k, "" & j & "") <> 0 Then
Cells(i, 5) = j
TextString = Replace(k, "" & j & "", "")
Cells(i, 4) = TextString
End If
Next
Next
With Application
.ScreenUpdating = True
End With
End Sub
姓名列公式
=INDEX(Sheet3!$A$1:$A$6,MATCH(100000,FIND(Sheet3!$A$1:$A$6,Sheet2!A2)))
其中Sheet3!$A$1:$A$6是你事先定义好的所有人名,这个是数组公式,粘贴好后用CTRL+SHIFT+ENTER结束
Sheet2!A2是你的原摘要数据
有了姓名后,新摘要用=SUBSTITUTE(A2,C2,"")这样的替换公式就可以了
查找并替换掉摘要。把名字抽取出来。
请问这段VBA该怎么使用?本人新手,应该插在哪里?
在你的VBA代码里,哪里是调用已有人名的代码?
调用人名是通过循环语句实现的,就是把所有的记录与现有的人名做比对,如果找到就进行处理
请教VBA高手EXCEL表格无规律数据中提取人名视频
相关评论:
尚浩家假设是在B1单元格中输入数字,用下面代码:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Row <> 1 Or Target.Column <> 2 Then Exit Sub Range("A" & Range("A65536").End(xlUp).Row + 1) = Target End Sub
尚浩家rand=″D″+CStr(i)rane=″E″+CStr(i)ranf=″F″+CStr(i)Worksheets(″Sheet1″).Range(ranf)=Worksheets(″Sheet1″).Range(rand)*Worksheets(″Sheet1″).Range(rane)NextiEndSub 5. 按执行键,就可达到设计要求的计算表格项的自动填充,且填充结果为纯数据。Excel提供了VBA功能,使我们...
尚浩家Excel中经常需要使用到vba进行自定义函数的技巧,自定义函数具体该如何用vba自定义呢?接下来是小编为大家带来的excel利用vba定义函数的教程,供大家参考。excel利用vba定义函数的教程 用vba定义函数步骤1:例:下面表格中需要计算一些三角形的面积 用vba定义函数步骤2:B列是底边长,C列是高,要求在D列...
尚浩家这还要代码?在下方的“工作表标签”中点选就可以。没有“工作表标签”?查一下“工具\/选项\/视图”中,窗口选项的“工作表标签”有没有选中。
尚浩家加一个列吧:C1=1 C2=SUM($B$1:$B1)+1 假定你A列有10行,就往下拖到C11 D1=INDEX($A$1:$A$11,MATCH(ROW(),$C$1:$C$11,1))往下拖到出现0为止。
尚浩家1、VBA是一个工具,你得会用它才能实现你的需求。2、首先要提供表格的格式 3、以下是一段生成表格的代码,可以试一下。Sub lqxs()Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$Dim dz$, dz3$, yy$, nm$Application.ScreenUpdating = FalseSheet3.ActivateArr = [a1].CurrentRegionks = ...
尚浩家Sub Macro8() 建筑、安装删除空行 Dim i, j As Integer 定义整数 Dim A(2), B, C, D, E As String 定义字符串 A(0) = "建筑"A(1) = "安装"For i = 0 To 1 Step 1 Sheets(A(i)).Select 选择建筑表 For j = 430 To 6 Step -1 (为什么要这样设置) 由...
尚浩家Private Const DirPath$ = "C:\\" '指向查找的路径 Sub aa()Dim Filename Dim i& Dim Wb As Workbook, Rng As Range Application.ScreenUpdating = False Application.DisplayAlerts = False On Error Resume Next With Worksheets("总表")For i = 1 To .[B65536].End(3).Row If Len(....
尚浩家excel中可以使用vba来打开工作薄的,下面小编就为大家详细介绍一下,有需要的朋友可以参考本文!步骤 1、首先我们打开一个工作样表作为例子。2、我们使用alt+f11组合快捷键进入vbe编辑器,插入一个新的模块,并在模块中输入以下代码:Sub openWorkbook1()Workbooks.Open 需打开文件的路径\\文件名 End Sub ...
尚浩家假如合同号码在A1单元格,型号在B1单元格...,数据不超过1000行 表2中中你在A2单元格输入了合同号,在B2:D2输出查询到的型号、数量、日期等。在B2单元格输入 =IF(iserror(Vlookup($A2,表1!$A$2:B$1000,column(B:B),false),"",Vlookup($A2,表1!$A$2:B$1000,column(B:B),false))向...