excel中vba中Selection.Replace的用法,及参数的含义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel中vba中Selection.Replace的用法,及参数的含义相关的知识,希望对你有一定的参考价值。
1.Replace函数的含义
用新字符串替换旧字符串,而且替换的位置和数量都是指定的。
2.replace函数的语法格式
=Replace(old_text,start_num,num_chars,new_text)
=replace(要替换的字符串,开始位置,替换个数,新的文本)。
注意:第四个参数是文本,要加上引号。
3.如图所示,常见的把手机号码后四位屏蔽掉,输入公式
=REPLACE(A2,8,4,"****")。
4.注意:第四个参数是文本,要加上引号。且在英文状态下输入。
5.参数New_text——新的文本可省略,如图所示,也可以用""来代替,表示为空把old_text(旧文本)删除。
参考技术A selection 说白了就是选择的区域range,下面可以给你参考一下,希望能给你帮助Range.Replace 方法
返回 Boolean,它表示指定区域内单元格中的字符。使用此方法并不会更改选定区域或活动单元格。
语法
表达式.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
表达式 一个代表 Range 对象的变量。
参数
名称 必选/可选 数据类型 描述
What 必选 Variant Microsoft Excel 要搜索的字符串。
Replacement 必选 Variant 替换字符串。
LookAt 可选 Variant 可为以下 XlLookAt 常量之一:xlWhole 或 xlPart。
SearchOrder 可选 Variant 可为以下 XlSearchOrder 常量之一:xlByRows 或 xlByColumns。
MatchCase 可选 Variant 如果为 True,则搜索区分大小写。
MatchByte 可选 Variant 只有在 Microsoft Excel 中选择或安装了双字节语言时,才能使用此参数。如果为 True,则双字节字符只与双字节字符匹配。如果为 False,则双字节字符可与其对等的单字节字符匹配。
SearchFormat 可选 Variant 该方法的搜索格式。
ReplaceFormat 可选 Variant 该方法的替换格式。
返回值
Boolean
说明
每次使用此方法后,参数 LookAt、SearchOrder、MatchCase 和 MatchByte 的设置都将被保存。如果下次调用此方法时不指定这些参数的值,就使用保存的值。设置这些参数将更改“查找”对话框中的设置,如果省略这些参数,更改“查找”对话框中的设置将更改使用的保存值。要避免出现这一问题,每次使用此方法时请明确设置这些参数。
示例
本示例将每个“SIN”三角函数都替换为“COS”函数。替换所进行的区域为工作表 Sheet1 中的 A 列。
Visual Basic for Applications
Worksheets("Sheet1").Columns("A").Replace _
What:="SIN", Replacement:="COS", _
SearchOrder:=xlByColumns, MatchCase:=True本回答被提问者和网友采纳
从VBA中的excel中选择多列
【中文标题】从VBA中的excel中选择多列【英文标题】:select multiple column from excel in VBA 【发布时间】:2018-02-12 08:04:11 【问题描述】:如何使用 Vba 在 Excel 文件中选择多个列。因为我的 excel 文件包含 580 列。
我尝试使用下面的查询,但它只能选择 255 列。
Dim ExcelConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & TxtPath.Text & "; Extended Properties=""Excel 12.0 Xml; HDR=Yes""")
ExcelConnection.Open()
Dim expr As String = "select * FROM [Sheet1$]"
Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, ExcelConnection)
Dim objDR As OleDbDataReader
Dim SQLconn As New SqlConnection()
Dim ConnString As String = "data source=" & DBServer1 & "; initial catalog=" & DBDataBase1 & "; persist security info=true; user id=" & DBUSer1 & "; password=" & DBPass1
SQLconn.ConnectionString = ConnString
SQLconn.Open()
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLconn)
bulkCopy.DestinationTableName = "TMP_UPLOAD_ISP"
Try
objDR = objCmdSelect.ExecuteReader
bulkCopy.WriteToServer(objDR)
objDR.Close()
SQLconn.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
我尝试使用选择列标题(要选择的 220 列),它会出现错误,直到我减少到 100 列。
Dim ExcelConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & TxtPath.Text & "; Extended Properties=""Excel 12.0 Xml; HDR=Yes""")
ExcelConnection.Open()
Dim expr As String = "select Plan_Year,Colom4,Colom6,Colom7,Colom21,Colom22,Colom24,Colom25,Colom27,Colom28,Colom33,Colom34,Colom38,Colom39,Colom41,Colom42,Colom47,Colom48,Colom49,Colom50,Colom51,Colom52,Colom66,Colom67,Colom69,Colom70,Colom72,Colom73,Colom78,Colom79,Colom83,Colom84,Colom86,Colom87,Colom92,Colom93,Colom94,Colom95,Colom96,Colom97,Colom111,Colom112,Colom114,Colom115,Colom117,Colom118,Colom123,Colom124,Colom128,Colom129,Colom131,Colom132,Colom137,Colom138,Colom139,Colom140,Colom141,Colom142,Colom156,Colom157,Colom159,Colom160,Colom162,Colom163,Colom168,Colom169,Colom173,Colom174,Colom176,Colom177,Colom182,Colom183,Colom184,Colom185,Colom186,Colom187,Colom201,Colom202,Colom204,Colom205,Colom207,Colom208,Colom213,Colom214,Colom218,Colom219,Colom221,Colom222,Colom227,Colom228,Colom229,Colom230,Colom231,Colom232,Colom246,Colom247,Colom249,Colom250,Colom252,Colom253,Colom258,Colom259,Colom263,Colom264,Colom266,Colom267,Colom272,Colom273,Colom274,Colom275,Colom276,Colom277,Colom303,Colom304,Colom306,Colom307,Colom309,Colom310,Colom315,Colom316,Colom320,Colom321,Colom323,Colom324,Colom329,Colom330,Colom331,Colom332,Colom333,Colom334,Colom348,Colom349,Colom351,Colom352,Colom354,Colom355,Colom360,Colom361,Colom365,Colom366,Colom368,Colom369,Colom374,Colom375,Colom376,Colom377,Colom378,Colom379,Colom393,Colom394,Colom396,Colom397,Colom399,Colom400,Colom406,Colom407,Colom410,Colom411,Colom413,Colom414,Colom419,Colom420,Colom421,Colom422,Colom423,Colom424,Colom438,Colom439,Colom441,Colom442,Colom444,Colom445,Colom450,Colom451,Colom455,Colom456,Colom458,Colom459,Colom464,Colom465,Colom466,Colom467,Colom468,Colom469,Colom483,Colom484,Colom486,Colom487,Colom489,Colom490,Colom495,Colom496,Colom500,Colom501,Colom503,Colom504,Colom509,Colom510,Colom511,Colom512,Colom513,Colom514,Colom528,Colom529,Colom531,Colom532,Colom534,Colom535,Colom540,Colom541,Colom545,Colom546,Colom548,Colom549,Colom554,Colom555,Colom556,Colom557,Colom558,Colom559 FROM [Sheet1$]"
Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, ExcelConnection)
Dim objDR As OleDbDataReader
Dim SQLconn As New SqlConnection()
Dim ConnString As String = "data source=" & DBServer1 & "; initial catalog=" & DBDataBase1 & "; persist security info=true; user id=" & DBUSer1 & "; password=" & DBPass1
SQLconn.ConnectionString = ConnString
SQLconn.Open()
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLconn)
bulkCopy.DestinationTableName = "TMP_UPLOAD_ISP"
Try
objDR = objCmdSelect.ExecuteReader
bulkCopy.WriteToServer(objDR)
objDR.Close()
SQLconn.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
如何选择我想要选择的列(间歇性 220 列)。
【问题讨论】:
如果您要先执行与 Excel 相关的功能以返回数据,然后再操作到数据库中会怎样?即最初使用本机 Excel 函数。 【参考方案1】:您正在使用 ACE 提供程序,这意味着您受到 MS Access 限制的约束。 Access 的最大字段限制为 255(请参阅:Access 2016 specifications)。
根据源工作表,您可以使用范围查询来检索多个结果集,然后将它们合并。
Select * From [SheetName$A1:IU]
然后
Select * From [SheetName$UI1:SQ]
“UI”列是第 255 列,“SQ”列是第 511 列。
如果您不熟悉此范围语法,则省略结束列上的行会告诉它从起始行开始查找,直到在列范围中找不到数据。
【讨论】:
我认为它不起作用,因为在 [SheetName$A1:IU] 和 [SheetName$UI1:SQ] 之间没有可以加入的密钥。以上是关于excel中vba中Selection.Replace的用法,及参数的含义的主要内容,如果未能解决你的问题,请参考以下文章