请教VBA高手EXCEL表格无规律数据中提取人名

来自:    更新日期:早些时候
请教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表格无规律数据中提取人名视频

相关评论:
  • 13114944610excel表格问题请教(高手请进!)
    尚浩家假设是在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

  • 13114944610利用VBA实现Excel表格计算
    尚浩家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功能,使我们...

  • 13114944610excel利用vba定义函数的教程全解
    尚浩家Excel中经常需要使用到vba进行自定义函数的技巧,自定义函数具体该如何用vba自定义呢?接下来是小编为大家带来的excel利用vba定义函数的教程,供大家参考。excel利用vba定义函数的教程 用vba定义函数步骤1:例:下面表格中需要计算一些三角形的面积 用vba定义函数步骤2:B列是底边长,C列是高,要求在D列...

  • 13114944610求助VBA EXCEL 编程达人!
    尚浩家这还要代码?在下方的“工作表标签”中点选就可以。没有“工作表标签”?查一下“工具\/选项\/视图”中,窗口选项的“工作表标签”有没有选中。

  • 13114944610EXCEL表格问题,请教高手?
    尚浩家加一个列吧: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为止。

  • 13114944610Excel 求助VBA编写自动生成表格
    尚浩家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 = ...

  • 13114944610求EXCEL VBA高手注解
    尚浩家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 (为什么要这样设置) 由...

  • 13114944610请高手帮忙编写EXCEL VBA程序,跨工作簿查询并返回数据
    尚浩家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(....

  • 13114944610在excel表格中使用vba函数打开工作薄
    尚浩家excel中可以使用vba来打开工作薄的,下面小编就为大家详细介绍一下,有需要的朋友可以参考本文!步骤 1、首先我们打开一个工作样表作为例子。2、我们使用alt+f11组合快捷键进入vbe编辑器,插入一个新的模块,并在模块中输入以下代码:Sub openWorkbook1()Workbooks.Open 需打开文件的路径\\文件名 End Sub ...

  • 13114944610高手!excel 中运用VBA查找
    尚浩家假如合同号码在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))向...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网