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的用法,及参数的含义的主要内容,如果未能解决你的问题,请参考以下文章

java 调用excel vba

excel中使用vba以只读方式打开工作薄的操作方法

在EXCEL中用VBA怎样操作WORD文档中嵌入的EXCEL表格?

请教,在Excel 中使用VBA查找问题。

excel vba数据比较?

EXCEL VBA 求助