使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂代码

合集下载

VBA代码集锦-Find方法(4)-查找特定格式的单元格

VBA代码集锦-Find方法(4)-查找特定格式的单元格

VBA代码集锦-Find方法(4)-查找特定格式的单元格一、代码示例Sub FindWithFormat2()With Application.FindFormat.Font.Name = "黑体".ColorIndex = 3.Size = 12End WithCells.Find(what:="*", searchformat:=True).ActivateSelection.Interior.ColorIndex = 5MRG = Selection.AddressDoCells.Find(what:="*", After:=ActiveCell, searchformat:=True).Activateaaa = Selection.AddressSelection.Interior.ColorIndex = 5Loop Until MRG = aaaEnd Sub二、代码解析Sub FindWithFormat2()'本示例在当前工作表单元格中查找字体为”黑体”且字体颜色为红色,字号为12的非空单元格。

'其中,Application.FindFormat对象允许指定所需要查找的格式,此时Find方法的参数SearchFormat应设置为True。

With Application.FindFormat.Font.Name = "黑体" '字体.ColorIndex = 3 '字体颜色.Size = 12 '字号End WithCells.Find(what:="*", searchformat:=True).Activate'激活符合条件的单元格Selection.Interior.ColorIndex = 5 '单元格底色填充为蓝色MRG = Selection.Address '记录单元格地址'开始循环查找DoCells.Find(what:="*", After:=ActiveCell, searchformat:=True).Activate'激活符合条件的单元格aaa = Selection.Address '记录单元格地址Selection.Interior.ColorIndex = 5 '单元格底色填充为蓝色'其他处理方式Loop Until MRG = aaa '查找到与第一个符合条件的单元格地址相同时停止End Sub----------------------------------------。

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂代码

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂代码

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂代码Function IsLike(strText As String, pattern As String) As BooleanIsLike = strText Like patternEnd FunctionFunction IsChinese(strText As String) As BooleanDim i%, h$h = Hex(Asc(strText))If Asc(Left(h, 1)) >= 66 And Asc(Left(h, 1)) <= 70 ThenIsChinese = TrueEnd IfEnd FunctionFunction StringType(strText As String, Optional outPutType AsInteger = 1, Optional sumVar AsBoolean = False) As VariantDim strtemp As String, blnArray(1 To 5) As String, strPreType As Integer Dim intNum As Integer, startPos As Integer, intlen As Integer Dim strArray As Variant, strCompare1 As String, strCompare2 As String, dblSum As Double If sumVar = True And Not (outPutType <> 2 Or outPutType <> 4) Then sumVar = False For i = 1 To Len(strText)strtemp = Mid(strText, i, 1)If i > 1 Then strCompare1 = WorksheetFunction.Asc(Mid(strText, i - 1, 3))strCompare2 = WorksheetFunction.Asc(Mid(strText, i, 2))If WorksheetFunction.Dbcs(strtemp) = strtemp Thenstrtemp = WorksheetFunction.Asc(strtemp)If IsLike(strtemp, "[0-9]") Or IsLike(strCompare1, "[0-9].[0-9]") Or IsLike(strCompare2, "-[0-9]") ThenIf strPreType = 4 ThenblnArray(4) = Left(blnArray(4), Len(blnArray(4)) - 1) & intNumElseintNum = 1blnArray(4) = blnArray(4) & "- " & i & "/" & intNumEnd IfstrPreType = 4intNum = intNum + 1ElseIf IsLike(strtemp, "[a-zA-Z]") ThenIf strPreType = 5 ThenblnArray(5) = Left(blnArray(5), Len(blnArray(5)) - 1) & intNumElseintNum = 1blnArray(5) = blnArray(5) & "- " & i & "/" & intNumEnd IfstrPreType = 5intNum = intNum + 1ElseIf IsChinese(strtemp) ThenIf strPreType = 1 ThenblnArray(1) = Left(blnArray(1), Len(blnArray(1)) - 1) & intNumElseintNum = 1blnArray(1) = blnArray(1) & "- " & i & "/" & intNumEnd IfstrPreType = 1intNum = intNum + 1ElsestrPreType = 0End IfElseIf IsLike(strtemp, "[0-9]") Or IsLike(strCompare1, "[0-9].[0-9]") Or IsLike(strCompare2, "-[0-9]") ThenIf strPreType = 2 ThenblnArray(2) = Left(blnArray(2), Len(blnArray(2)) - 1) & intNumElseintNum = 1blnArray(2) = blnArray(2) & "- " & i & "/" & intNumEnd IfstrPreType = 2intNum = intNum + 1ElseIf IsLike(strtemp, "[a-zA-Z]") ThenIf strPreType = 3 ThenblnArray(3) = Left(blnArray(3), Len(blnArray(3)) - 1) & intNumElseintNum = 1blnArray(3) = blnArray(3) & "- " & i & "/" & intNumEnd IfstrPreType = 3intNum = intNum + 1ElsestrPreType = 0End IfEnd IfNextstrtemp = ""strArray = Split(blnArray(outPutType), "-")For i = 1 To UBound(strArray)intNum = InStr(1, strArray(i), "/")startPos = Mid(strArray(i), 1, intNum - 1)intlen = Mid(strArray(i), intNum + 1)If sumVar ThendblSum = dblSum + WorksheetFunction.Asc(Mid(strText, startPos, intlen))Elsestrtemp = strtemp & Mid(strText, startPos, intlen) & " "End IfNextIf sumVar ThenStringType = dblSum ElseIf Len(strtemp) ThenStringType = Left(strtemp, Len(strtemp) - 1)ElseStringType = ""End IfEnd IfEnd Function大连软件园1号楼及周边改造地块项目3#楼炉渣回填施工技术交底编制人: 马广军审核人: 邹旭2014年 11月 26 日大连软件园1号楼及周边改造地块项目技术交底记录工程名称大连软件园1号楼及周边改造地块项目施工单位大连亿达建设工程有限公司分项工程名称炉渣回填施工2014.11.26 交底日期交底提要回填,炉渣交底主要内容:一、主要材料3炉渣:宜采用烟煤炉渣,表观密度应为800kg/m以内;炉渣内不应含有机杂质和未燃尽的煤块,粒径不应大于40mm,且不可大于垫层厚度的1/2;炉渣粒径在5mm以下者,不得超过炉渣总体积的40%。

Excel中VBA代码段汇集,附中文解说

Excel中VBA代码段汇集,附中文解说

Excel中VBA代码段汇集,附中文解说vba语句(1) Option Explicit '强制对模块内所有变量进行声明(2) Option Base 1 '指定数组的第一个下标为1(3) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息(4) On Error GoT o 100 '当错误发生时跳转到过程中的某个位置(5) On Error GoT o 0 '恢复正常的错误提示(6) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示(7) Application.DisplayAlerts=True '在程序执行过程中(8) Application.ScreenUpdating=False '关闭屏幕刷新(9) Application.ScreenUpdating = True '打开屏幕刷新(10) Workbooks.Add() '创建一个新的工作簿(11) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿(12) ThisWorkbook.Save '保存工作簿(13) ThisWorkbook.close '关闭当前工作簿(14) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数(15) '返回活动工作薄的名称(16) ‘返回当前工作簿名称(17) ThisWorkbook.FullName ‘返回当前工作簿路径和名(18) (18) edRange.Rows.Count ‘当前工作表中已使用的行数(19) Rows.Count ‘获取工作表的行数(注:考虑兼容性)(20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum(21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前(22) ActiveSheet.Move After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count) '将当前工作表移至工作表的最后(23) Worksheets(Array(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2(24) Sheets(“sheet1”).Delete或Sheets(1).Delete '删除工作表1(25) edRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式(26) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接(27) ActiveCell.CurrentRegion.Select选择当前活动单元格所包含的范围,上下左右无空行(28) Cells.Select ‘选定当前工作表的所有单元格(29) Range(“A1”).ClearContents '清除活动工作表上单元格A1中的Selection.ClearContents '清除选定区域内容Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式(30) Cells.Clear '清除工作表中所有单元格的内容(31) ActiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列(32) Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中(33) Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中(34) Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开始的区域中(35) Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”) '复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列(36) ActiveWindow.RangeSelection.Count '活动窗口中选择的单元格数(37) Selection.Count '当前选中区域的单元格数(38) Range(“A1”).Interior.ColorIndex ‘获取单元格A1背景色(39) cells.count ‘返回当前工作表的单元格数(40) Range(“B3”).Resize(11, 3)(41) Union(Range(“A1:A9”),Range(“D1:D9”)) 区域连接(42) Intersect(Range(“A1:B9”),Range(“A1:D9”))) ‘返回的交叉区域(43) Selection.Columns.Count ‘当前选中的单元格区域中的列数(44) Selection.Rows.Count ‘当前选中的单元格区域中的行数(45) edRange.Row ‘获取单元格区域中使用的第一行的行号(46) Application.WorksheetFunction.IsNumber(“A1”) '使用工作表函数检查A1单元格中的数据是否为数字(47)Range(“A:A”).Find(Application.WorksheetFunction.Max(Range(“A:A”))).Activate'激活单元格区域A列中最大值的单元格(48) MsgBox “Hello!” '消息框中显示消息Hello(49) Ans=MsgBox(“Continue?”,vbYesNo) '在消息框中点击“是”按钮,则Ans值为vbYes;点击“否”按钮,则Ans值为vbNo。

使用VBA进行数据验证

使用VBA进行数据验证

使用VBA进行数据验证在Excel中,VBA(Visual Basic for Applications)是一种强大的编程语言,能够帮助用户自定义功能和自动化任务。

其中一个常见的应用就是数据验证。

通过使用VBA进行数据验证,用户可以确保数据的准确性和完整性,避免输入错误和不一致的数据。

在这篇文章中,我们将介绍如何利用VBA来进行数据验证,并展示具体的代码示例。

数据验证是一种重要的技术,可以有效避免用户在输入数据时出现错误。

通过设定规则和条件,可以限制用户输入的范围,确保数据的有效性。

在Excel中,我们可以通过数据验证功能实现这一目的,而借助VBA,用户可以更灵活地定制验证规则,实现更复杂的验证逻辑。

首先,我们需要打开Excel,并按下Alt + F11键打开VBA编辑器。

在VBA编辑器中,我们可以开始编写代码。

假设我们有一个需要进行数据验证的单元格范围,比如A1:A10。

我们可以编写以下代码来限制该单元格范围只能输入数字:```vbaPrivate Sub Worksheet_Change(ByVal Target As Range)Dim cell As RangeFor Each cell In TargetIf Not Intersect(cell, Me.Range("A1:A10")) Is Nothing ThenIf Not IsNumeric(cell.Value) ThenMsgBox "只能输入数字!", vbExclamationApplication.EnableEvents = Falsecell.Value = ""Application.EnableEvents = TrueEnd IfEnd IfNext cellEnd Sub```在上面的代码中,我们通过Worksheet_Change事件来触发数据验证。

Excel-VBA自定义函数分离字符串中的数值英文和汉字

Excel-VBA自定义函数分离字符串中的数值英文和汉字

Excel-VBA自定义函数分离字符串中的数值英文和汉字应用场景返回单元格字符中的数值、字母、汉字知识要点1:CreateObject('VBSCRIPT.REGEXP')正则表达式:又称规则表达式,计算机科学的一个概念。

正则表通常被用来检索、替换那些符合某个模式(规则)的文本声明自定义函数取值,第一个参数是单元格或者字符串,第二参数用于指定取值的类型,包括-hz\ hz\-zm\ zm\-sz\ sz 6个选项rng 表示单元格引用,types参数用于控制英文、数字和汉字,如果忽略第二参数,表示取数值Function 取值(Rng, Optional Types As String = ' sz') As String With CreateObject('VBSCRIPT.REGEXP') '引用正则表达式.Global = True '全局变量'指定搜索条件,如是第二参数左边有“-”,那么取反(即去除指定的对象),否则提取指定的对象'如果第二参数包括hz,那么计算对象的范围是,代表所有汉字,如果是sz,对象范围0-9代表所有数组,否则计算对象为字母,范围a-zA-Z.Pattern = '[' & IIf(Left(Types, 1) = '-', '', '^') & IIf(Right(Types, 2) = 'hz', '一-隝]', IIf(Right(Types, 2) = 'sz', '0-9]', 'a-zA-Z]'))取值 = .Replace(Rng, '') '替换掉不需要的字符End WithEnd Function。

vba提取数字和运算符号的方法

vba提取数字和运算符号的方法

VBA(Visual Basic for Applications)是一种在Microsoft Office应用程序中使用的编程语言,可用于自动化任务和处理数据。

在VBA中,提取数字和运算符号是常见的需求,可以通过一些方法来实现。

1. 使用函数提取数字和运算符号在VBA中,可以使用内置的函数来提取字符串中的数字和运算符号。

使用Mid函数可以从指定位置开始提取字符串中的字符,而使用IsNumeric函数可以判断一个字符是否为数字。

通过结合这些函数,可以编写一个VBA函数来提取字符串中的数字和运算符号。

2. 使用正则表达式提取数字和运算符号正则表达式是一种强大的文本匹配工具,可以用来识别字符串中的模式。

在VBA中,可以使用Microsoft VBScript Regular Expressions 库来支持正则表达式操作。

通过编写正则表达式模式,可以轻松地提取字符串中的数字和运算符号。

3. 使用循环遍历字符串提取数字和运算符号如果没有内置函数或正则表达式库的支持,也可以通过循环遍历字符串的方式来提取数字和运算符号。

通过判断每个字符是否为数字或运算符号,可以逐个提取出来并组合成新的字符串。

总结回顾:在VBA中,提取数字和运算符号可以通过多种方法实现,包括使用内置函数、正则表达式和循环遍历字符串。

每种方法都有其适用的场景和优缺点,可以根据具体需求来选择合适的方法。

个人观点:我认为在实际开发中,应该根据具体情况选择最合适的方法来提取数字和运算符号。

对于简单的需求,可以使用内置函数;对于复杂的需求,可以考虑使用正则表达式或循环遍历字符串。

熟练掌握这些方法,可以让VBA开发变得更加高效和灵活。

希望这篇文章能够帮助您更深入地了解在VBA中提取数字和运算符号的方法。

如果还有其他问题,欢迎随时向我提问。

VBA(Visual Basic for Applications)是一种在Microsoft Office应用程序中使用的编程语言,它可以让用户自动化任务和处理数据,从而提高工作效率。

word检查标点符号错误vba

word检查标点符号错误vba

word检查标点符号错误vba可以使用VBA编程来自动检查和修复Word文档中的标点符号错误。

以下是一个简单的VBA 代码示例,用于检查和修复常见的标点符号错误:```vbaSub 检查修复标点符号错误()Dim rng As RangeDim i As LongDim punctuation As VariantDim correctPunctuation As Variant' 定义需要检查的标点符号和对应的正确标点符号punctuation = Array(",", "。

", "!", "?", ";", ":")correctPunctuation = Array(",", ".", "!", "?", ";", ":")' 循环遍历每一个段落For Each rng In ActiveDocument.Range.Paragraphs' 检查该段落中的每一个字符For i = 1 To rng.Range.Characters.Count' 判断字符是否为需要修复的标点符号If UCase(rng.Range.Characters(i).Text) Like "[!A-Z0-9]" ThenFor j = LBound(punctuation) To UBound(punctuation)' 修复标点符号If rng.Range.Characters(i).Text = punctuation(j) Thenrng.Range.Characters(i).Text = correctPunctuation(j)Exit ForEnd IfNext jEnd IfNext iNext rngEnd Sub```请注意,在运行此VBA代码之前,请务必先备份您的Word文档,以防止不可预料的错误。

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂解读

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂解读

Function IsLike(strText As String, pattern As String As BooleanIsLike = strText Like patternEnd FunctionFunction IsChinese(strText As String As BooleanDim i%, h$h = Hex(Asc(strTextIf Asc(Left(h, 1 >= 66 And Asc(Left(h, 1 <= 70 ThenIsChinese = TrueEnd IfEnd FunctionFunction StringType(strText As String, Optional outPutType As Integer = 1, Optional sumVar As Boolean = False As VariantDim strtemp As String, blnArray(1 To 5 As String, strPreType As IntegerDim intNum As Integer, startPos As Integer, intlen As IntegerDim strArray As Variant, strCompare1 As String, strCompare2 As String, dblSum As DoubleIf sumVar = True And Not (outPutType <> 2 Or outPutType <> 4 Then sumVar = FalseFor i = 1 To Len(strTextstrtemp = Mid(strText, i, 1If i > 1 Then strCompare1 = WorksheetFunction.Asc(Mid(strText, i - 1, 3strCompare2 = WorksheetFunction.Asc(Mid(strText, i, 2If WorksheetFunction.Dbcs(strtemp = strtemp Thenstrtemp = WorksheetFunction.Asc(strtempIf IsLike(strtemp, "[0-9]" Or IsLike(strCompare1, "[0-9].[0-9]" Or IsLike(strCompare2, "-[0-9]" ThenIf strPreType = 4 ThenblnArray(4 = Left(blnArray(4, Len(blnArray(4 - 1 & intNumElseintNum = 1blnArray(4 = blnArray(4 & "- " & i & "/" & intNumEnd IfstrPreType = 4intNum = intNum + 1ElseIf IsLike(strtemp, "[a-zA-Z]" ThenIf strPreType = 5 ThenblnArray(5 = Left(blnArray(5, Len(blnArray(5 - 1 & intNumElseintNum = 1blnArray(5 = blnArray(5 & "- " & i & "/" & intNumEnd IfstrPreType = 5intNum = intNum + 1ElseIf IsChinese(strtemp ThenIf strPreType = 1 ThenblnArray(1 = Left(blnArray(1, Len(blnArray(1 - 1 & intNumElseintNum = 1blnArray(1 = blnArray(1 & "- " & i & "/" & intNumEnd IfstrPreType = 1intNum = intNum + 1ElsestrPreType = 0End IfElseIf IsLike(strtemp, "[0-9]" Or IsLike(strCompare1, "[0-9].[0-9]" Or IsLike(strCompare2, "-[0-9]" ThenIf strPreType = 2 ThenblnArray(2 = Left(blnArray(2, Len(blnArray(2 - 1 & intNum ElseintNum = 1blnArray(2 = blnArray(2 & "- " & i & "/" & intNumEnd IfstrPreType = 2intNum = intNum + 1ElseIf IsLike(strtemp, "[a-zA-Z]" ThenIf strPreType = 3 ThenblnArray(3 = Left(blnArray(3, Len(blnArray(3 - 1 & intNum ElseintNum = 1blnArray(3 = blnArray(3 & "- " & i & "/" & intNumEnd IfstrPreType = 3intNum = intNum + 1ElsestrPreType = 0End IfEnd IfNextstrtemp = ""strArray = Split(blnArray(outPutType, "-"For i = 1 To UBound(strArrayintNum = InStr(1, strArray(i, "/"startPos = Mid(strArray(i, 1, intNum - 1intlen = Mid(strArray(i, intNum + 1If sumVar ThendblSum = dblSum + WorksheetFunction.Asc(Mid(strText, startPos, intlen Else strtemp = strtemp & Mid(strText, startPos, intlen & " "End IfNextIf sumVar ThenStringType = dblSumElseIf Len(strtemp ThenStringType = Left(strtemp, Len(strtemp - 1 ElseStringType = "" End IfEnd IfEnd Function。

Excel怎么判断某一列的值是否为汉字

Excel怎么判断某一列的值是否为汉字

Excel怎么判断某⼀列的值是否为汉字判断A1单元格是否有汉字:1. Sub test2()2. Dim reg, strA$3. strA = [A1]4. Set reg = CreateObject("vbscript.regexp")5. reg.Pattern = "[^\u4e00-\u9fa5]"6. reg.Global = True7. If reg.Replace(strA, "") <> "" Then MsgBox "有汉字"8. End Sub9.如果要对A列进⾏判断,就把A列所有的值串成个字符串,然后对其进⾏正则判断Sub test2()Dim reg, arr, d, n, marr = Range("a1:a" & Range("a65535").End(xlUp).Row) '把A:A列放⼊数组Set d = CreateObject("Scripting.Dictionary") '申明字典For n = 1 To UBound(arr)d(1) = d(1) & arr(n, 1) '把所有A列数据合并,并放⼊字典d(1)的item中NextSet reg = CreateObject("vbscript.regexp") '申明正则m = d.Item(1)reg.Pattern = "[^\u4e00-\u9fa5]" '正则汉字判断公式reg.Global = TrueIf reg.Replace(m, "") <> "" Then MsgBox "有汉字" '判断并返回结果End Sub。

VBA中的表格数据校验与验证技巧

VBA中的表格数据校验与验证技巧

VBA中的表格数据校验与验证技巧在VBA中,表格数据校验与验证是非常重要的,它可以确保我们的数据是准确合法的,并且能够有效地管理和处理数据。

本文将介绍一些VBA中常用的表格数据校验与验证技巧,帮助读者更好地利用VBA处理表格数据。

一、数据格式验证数据格式验证是确保数据符合特定格式要求的一种校验手段。

在VBA中,我们可以使用内置的数据验证功能来进行数据格式验证。

以下是一些常用的数据格式验证技巧:1. 数值范围限制:在表格中,我们可能需要限制某一列的数值在特定的范围内。

可以通过以下方式实现:```vbaWith Range("A1:A10").Validation.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _Formula1:=1, Formula2:=100.IgnoreBlank = TrueEnd With```上述代码将限制A1:A10范围内的数值为整数,并且只能在1到100之间。

2. 文本长度限制:除了数值范围外,我们还可以限制某一列的文本长度。

可以通过以下方式实现:```vbaWith Range("B1:B10").Validation.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _Formula1:=1, Formula2:=10.IgnoreBlank = TrueEnd With```上述代码将限制B1:B10范围内的文本长度在1到10个字符之间。

3. 列表限制:有时我们需要限制某一列的值必须在一组预定的列表中。

可以通过以下方式实现:```vbaWith Range("C1:C10").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _Formula1:="Option1,Option2,Option3".IgnoreBlank = TrueEnd With```上述代码将限制C1:C10范围内的值必须在"Option1,Option2,Option3"这个列表中。

利用VBA宏代码把Excel单元格中汉字、数字或字母混合数据中的汉字提取出来

利用VBA宏代码把Excel单元格中汉字、数字或字母混合数据中的汉字提取出来

利⽤VBA宏代码把Excel单元格中汉字、数字或字母混合数据中的汉字提取出来利⽤VBA宏代码把Excel单元格中汉字、数字或字母混合数据中的汉字提取出来Excel⼯作表中的"数据"菜单下有"分列"命令,便于对有规律的数据序列进⾏分列,但是对于⼀些没有规律的数据序列则⽆法进⾏有效的分割,此时可以考虑利⽤Excel中的VBA代码来实现。

在如下图所⽰的⼯作表中,A列保存有汉字、数字及字母混合在⼀起的数据,因为汉字的个数是随机的,⽆法使⽤Excel中分列命令进⾏分列,现在要求将A列中数据的汉字部分提取出来放置到B列中,数字及字母部分分离出来放置到C列中,如何操作呢?第1步单击"⼯具→宏→宏"菜单命令,打开"宏"对话框。

第2步在"宏名"⽂本框中输⼊宏的名称"数据分列"。

第3步单击"创建"按钮,在打开的"Visual Basic编辑器"对话框中输⼊所⽰的代码。

Sub 数据分列()Dim m%,i%,strn$,rn as range,rng as rangeApplication.screenupdating=falseM=[a65536].end(xlup).rowSet rng=range(“a1:a” & m)Columns(“b:c”).clearcontentsFor each rn in rngFor I=1 to len(rn)Strn=mid(rn,I,1)If isnumeric(strn) thenRn.offset(0,1)=mid(rn,1,i-1)Rn.offset(0,2)=mid(rn,i)Exit forEnd ifNext iNext rnApplication.screenupdating=trueEnd sub第4步关闭"Visual Basic编辑器"对话框,在"宏"对话框中单击"执⾏"按钮。

Excel-VBA分离字符串中的字母、数字和汉字

Excel-VBA分离字符串中的字母、数字和汉字

Excel-VBA分离字符串中的字母、数字和汉字应用场景批量一键分离字符串中的数字、字母、汉字知识要点1:Asc 函数返回一个 Integer,代表字符串中首字母的字符代码。

如果ASCII值小于0,那么它是汉字或者标题2:Like 运算符用来比较两个字符串。

Like '[a-z,A-Z]' 是字母3:Like '#' 是数字4:WorksheetFunction.Trim 方法删除文本中的所有空格(除了单词之间的单个空格外)。

Sub 调用分离字符过程()If TypeName(Selection) = 'Range' ThenIf Selection.Columns.Count > 1 Then MsgBox '只能选择一列', 64, '提示': Exit SubIf Selection.Row = 1 Then MsgBox '不要选择第一行', 64, '提示': Exit SubSelection(1).Offset(-1, 1).Resize(1, 3) = Array('汉字', '数字', '字母') '写入标题Call 分离字符(Selection) '调用分离字符对过程选区进行字符分离End IfEnd SubSub 分离字符(Rng As Range)Dim Cell As Range, i As Integer, Str As String, hz As String, sz As String, zm As StringFor Each Cell In Rng '遍历参数代表区域中的每一个单元格If Len(Cell) > 0 Then '如果是非空单元格For i = 1 To Len(Cell.Text) '遍历单元格字符中的每一个字符Str = Mid(Cell.Text, i, 1) '逐个提示字符If Asc(Str) < 0 Then hz = hz & Str '如果ASCII码小于0,串联起来赋值给hz变量If Str Like '[a-z,A-Z]' Then zm = zm & StrIf Str Like '#' Or Str = '.' Then sz = sz & StrNext iEnd IfCell.Offset(0, 1) = hz '在选区后面的三个单元格分别写入汉字、数字、和字母'数字部分需要处理前置、后置小数点及多个小数点同时出现的问题,方法为将小数点转换成空格,在用trim去除多余的空格,最后将空格替换成小数点Cell.Offset(0, 2) = Replace(WorksheetFunction.Trim(Replace(sz, '.', ' ')), ' ', '.') Cell.Offset(0, 3) = zmhz = '': zm = '': sz = ''Next CellEnd Sub。

值得收藏的ExcelVBA在混合数据单元格中快速提取英文、数字、中文

值得收藏的ExcelVBA在混合数据单元格中快速提取英文、数字、中文

值得收藏的ExcelVBA在混合数据单元格中快速提取英文、数
字、中文
混合数据预览
先看看混乱的数据吧!也许你的数据比这更乱,不过也没关系,我们可以轻松提取我们想要的中文或英文或数据。

开始提取
❶首先是【开发工具】-【代码】-【Visual Basic】;
❷在弹出的界面中点击【插入】-【模块】;
❸将下列代码复制到模块中。

Function MyGet(Srg As String, Optional n As Integer = False)
Dim i As Integer
Dim s, MyString As String
Dim Bol As Boolean
For i = 1 To Len(Srg)
s = Mid(Srg, i, 1)
If n = 1 Then
Bol = Asc(s) <>
ElseIf n = 2 Then
Bol = s Like '[a-z,A-Z]'
ElseIf n = 0 Then
Bol = s Like '#'
End If
If Bol Then MyString = MyString & s
Next
MyGet = IIf(n = 1 Or n = 2, MyString, Val(MyString)) End Function
❹返回Excel界面,然后在需要提取单元格中录入:【=myget(A2,1)】是提取所有中文
【=myget(A2,2)】是提取所有英文
【=myget(A2)】是提取所有的数据。

[ExcelVBA]提取字符串中数字、中文、英文字符的自定义函数(修正版)

[ExcelVBA]提取字符串中数字、中文、英文字符的自定义函数(修正版)

[ExcelVBA]提取字符串中数字、中文、英文字符的自定义函数(修正版)展开全文本文链接:/blog/static/1230394712009631319 59304/分类:Excel VBA 编程请根据具体要求编辑宏代码应用。

修正版:Sub Sample()' by oicu# 2009/7/31' 数据在第一列(A列),结果放在第二列(B列)之后' 提取数字时设置不带小数点的数值格式防止出现1.21314E+12这种科学记数法' 设置列宽自动适应数据长度' 修正全字母时提取得到数字0' 英文标点不会提取出来的Dim i As IntegerFor i = 1 To WorksheetFunction.CountA(Columns(1))' 默认为提取数字Cells(i, 2).NumberFormatLocal = "0_ "Cells(i, 2).Value = GetNum(Cells(i, 1).Value)' Cells(i, 2).Value = GetNum(Cells(i, 1).Value, 0)' 提取中文及中文标点Cells(i, 3).Value = GetNum(Cells(i, 1).Value, 1)' 提取字母Cells(i, 4).Value = GetNum(Cells(i, 1).Value, 2)Next iColumns("B:B").EntireColumn.AutoFitColumns("C:C").EntireColumn.AutoFitColumns("D:D").EntireColumn.AutoFitEnd SubFunction GetNum(Srg As String, Optional n As Integer = False)Dim i As IntegerDim s, MyString As StringDim Bol As BooleanFor i = 1 To Len(Srg)s = Mid(Srg, i, 1)Select Case nCase 0Bol = s Like "#"' Bol = s Like "[0-9]"Case 1Bol = Asc(s) < 0' 中文为负数,不要用AscB或者AscWCase 2Bol = s Like "[a-zA-Z]"' zA之间不要带半角逗号Case ElseExit FunctionEnd SelectIf Bol Then MyString = MyString & sNext iIf MyString <> "" Then _GetNum = IIf(n = 1 Or n = 2, MyString, Val(MyString))End FunctionExcel中用函数提取字符串中的数字的方法请看另一篇日志:/blog/static/1230394712009852 119363/。

vba 查找并选中字体的方法

vba 查找并选中字体的方法

vba 查找并选中字体的方法VBA(Visual Basic for Applications)是一种编程语言,可用于在Microsoft Office应用程序中自动化任务和操作。

通过VBA,我们可以实现对字体的查找和选中操作。

下面是一个示例代码,演示了如何使用VBA查找并选中指定字体:```vbaSub FindAndSelectFont()Dim searchText As StringDim fontName As StringDim rng As Range' 在此处设置要查找的文本searchText = "示例文本"' 在此处设置要查找的字体名称fontName = "宋体"' 在整个工作表中查找文本Set rng = Cells.Find(What:=searchText,LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)' 如果找到了匹配的文本,则选中该单元格If Not rng Is Nothing Then = fontNamerng.SelectElseMsgBox "未找到匹配的文本。

"End IfEnd Sub```以上代码首先定义了要查找的文本和字体名称,然后使用`Cells.Find`方法在整个工作表中查找匹配的文本。

如果找到了匹配的文本,就将其字体名称修改为指定的字体,并选中该单元格。

如果未找到匹配的文本,则会显示一个消息框提示。

你可以根据自己的需求来修改代码中的搜索文本和字体名称。

通过以上示例代码,我们可以轻松地使用VBA实现对字体的查找和选中操作,提高工作效率。

VBA是一门强大的编程语言,它不仅可以用于处理办公自动化任务,还可以进行复杂的数据处理和分析。

正则匹配非汉字字母数字符号

正则匹配非汉字字母数字符号

正则匹配非汉字字母数字符号如果你想使用正则表达式匹配非汉字、字母、数字和符号的字符,你可以使用以下正则表达式模式:
[^\u4e00-\u9fa5a-zA-Z0-9[:punct:]]
这个正则表达式的含义如下:
[^ ...]:表示否定字符类,匹配不在括号内的字符。

\u4e00-\u9fa5:表示匹配汉字的 Unicode 范围。

a-zA-Z0-9:表示匹配英文字母和数字。

[:punct:]:表示匹配标点符号。

将这些部分组合在一起,你可以匹配非汉字、字母、数字和符号的字符。

你可以在你的编程语言或工具中使用这个正则表达式模式来查找和提取符合条件的字符。

请注意,具体的正则表达式引擎和语法可能因编程语言或工具而异,因此在实际应用中,你需要根据你的使用环境进行适当的调整。

1/ 1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂代码Function IsLike(strText As String, pattern As String) As BooleanIsLike = strText Like patternEnd FunctionFunction IsChinese(strText As String) As BooleanDim i%, h$h = Hex(Asc(strText))If Asc(Left(h, 1)) >= 66 And Asc(Left(h, 1)) <= 70 ThenIsChinese = TrueEnd IfEnd FunctionFunction StringType(strText As String, Optional outPutType AsInteger = 1, Optional sumVar AsBoolean = False) As VariantDim strtemp As String, blnArray(1 To 5) As String, strPreType As Integer Dim intNum As Integer, startPos As Integer, intlen As Integer Dim strArray As Variant, strCompare1 As String, strCompare2 As String, dblSum As Double If sumVar = True And Not (outPutType <> 2 Or outPutType <> 4) Then sumVar = False For i = 1 To Len(strText)strtemp = Mid(strText, i, 1)If i > 1 Then strCompare1 = WorksheetFunction.Asc(Mid(strText, i - 1, 3))strCompare2 = WorksheetFunction.Asc(Mid(strText, i, 2))If WorksheetFunction.Dbcs(strtemp) = strtemp Thenstrtemp = WorksheetFunction.Asc(strtemp)If IsLike(strtemp, "[0-9]") Or IsLike(strCompare1, "[0-9].[0-9]") Or IsLike(strCompare2, "-[0-9]") ThenIf strPreType = 4 ThenblnArray(4) = Left(blnArray(4), Len(blnArray(4)) - 1) & intNumElseintNum = 1blnArray(4) = blnArray(4) & "- " & i & "/" & intNumEnd IfstrPreType = 4intNum = intNum + 1ElseIf IsLike(strtemp, "[a-zA-Z]") ThenIf strPreType = 5 ThenblnArray(5) = Left(blnArray(5), Len(blnArray(5)) - 1) & intNumElseintNum = 1blnArray(5) = blnArray(5) & "- " & i & "/" & intNumEnd IfstrPreType = 5intNum = intNum + 1ElseIf IsChinese(strtemp) ThenIf strPreType = 1 ThenblnArray(1) = Left(blnArray(1), Len(blnArray(1)) - 1) & intNumElseintNum = 1blnArray(1) = blnArray(1) & "- " & i & "/" & intNumEnd IfstrPreType = 1intNum = intNum + 1ElsestrPreType = 0End IfElseIf IsLike(strtemp, "[0-9]") Or IsLike(strCompare1, "[0-9].[0-9]") Or IsLike(strCompare2, "-[0-9]") ThenIf strPreType = 2 ThenblnArray(2) = Left(blnArray(2), Len(blnArray(2)) - 1) & intNumElseintNum = 1blnArray(2) = blnArray(2) & "- " & i & "/" & intNumEnd IfstrPreType = 2intNum = intNum + 1ElseIf IsLike(strtemp, "[a-zA-Z]") ThenIf strPreType = 3 ThenblnArray(3) = Left(blnArray(3), Len(blnArray(3)) - 1) & intNumElseintNum = 1blnArray(3) = blnArray(3) & "- " & i & "/" & intNumEnd IfstrPreType = 3intNum = intNum + 1ElsestrPreType = 0End IfEnd IfNextstrtemp = ""strArray = Split(blnArray(outPutType), "-")For i = 1 To UBound(strArray)intNum = InStr(1, strArray(i), "/")startPos = Mid(strArray(i), 1, intNum - 1)intlen = Mid(strArray(i), intNum + 1)If sumVar ThendblSum = dblSum + WorksheetFunction.Asc(Mid(strText, startPos, intlen))Elsestrtemp = strtemp & Mid(strText, startPos, intlen) & " "End IfNextIf sumVar ThenStringType = dblSum ElseIf Len(strtemp) ThenStringType = Left(strtemp, Len(strtemp) - 1)ElseStringType = ""End IfEnd IfEnd Function大连软件园1号楼及周边改造地块项目3#楼炉渣回填施工技术交底编制人: 马广军审核人: 邹旭2014年 11月 26 日大连软件园1号楼及周边改造地块项目技术交底记录工程名称大连软件园1号楼及周边改造地块项目施工单位大连亿达建设工程有限公司分项工程名称炉渣回填施工2014.11.26 交底日期交底提要回填,炉渣交底主要内容:一、主要材料3炉渣:宜采用烟煤炉渣,表观密度应为800kg/m以内;炉渣内不应含有机杂质和未燃尽的煤块,粒径不应大于40mm,且不可大于垫层厚度的1/2;炉渣粒径在5mm以下者,不得超过炉渣总体积的40%。

二、主要机具(1) 机械:搅拌机、手推车、平板振捣器。

(2) 工具:铁锨,扫帚等。

三、作业条件(1)结构工程已经验收,控制标高水平线已弹好,(2)与垫层有关的电气管线,设备管线及埋件安装完毕,并固定牢靠。

(3)垫层施工前应经隐蔽工程验收。

四、作业条件工艺流程:基层处理? 按体积比拌合? 铺设拌合好的炉渣? 上杠找平控制标高? 滚压并找平?拍边修整? 养护(1)基层处理:正式施工炉渣垫层前,把基层上粘结的杂物认真清除,清除后撒水湿润。

(2)拌合:水泥炉渣宜采用1:6(质量比)。

搅拌前应先按比例计量加水拌合,干料入机后先干搅1min,再加入适量的水搅拌1.5,2min,使水泥浆分布均匀。

1大连软件园1号楼及周边改造地块项目其干湿程度以便于滚压密实,有少量浆不泌水为宜;(3)控制标高:回填至-0.070m标高处,水平线已经在梁上弹好。

(5)铺设与滚压:虚铺和压实厚度的比例一般是1.3:1,铺炉渣垫层时,先在铺设基层面上撒水湿润;装铺炉渣熟料,全部铺好后滚压,在滚压中局部撒垫调整平整度,经反复进行滚压平整出浆,厚度符合设计要求;对墙根、边角、管根周围不宜滚压处,应用木拍板拍打平实。

本工程厚度较大时宜分层铺压。

水泥炉渣垫层的施工应随拌、随铺、随压实,全部操作过程应在2h内完成。

五(质量标准(1)保证项目:1)炉渣垫层使用的水泥、炉渣材料质量必须符合设计要求及有关标准规定。

2)施工配合比,铺压密实度应符合设计和施工验收规范要求。

3)炉渣垫层与基层间不得有空鼓和表面松动现象。

(2)允许偏差项目:见表1。

炉渣垫层允许偏差表1项目允许偏差(mm) 检验方法表面平整度 10 用2m靠尺楔形塞尺检查标高 ?10 用水准仪检查厚度个别地方不大于设计厚度1/10 尺量检查六(成品保护(1)垫层施工操作和运输中不应碰撞门口、管线、垫层内埋设件和已完的装饰面层。

审核人: 交底人: 接受交底人:2。

相关文档
最新文档