Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用宏清理数据_Excel_Vba - Fatal编程技术网

Excel 使用宏清理数据

Excel 使用宏清理数据,excel,vba,Excel,Vba,如果可能,我需要有关创建excel宏的帮助,该宏将清理电子表格中的一些字段 我收到了不同数量记录的excel电子表格。在下面的电子表格中,我需要设置诸如名字/姓氏/职位/城市等字段的格式,我在手动设置时使用了excel的适当功能。最重要的是,我还需要用另一张表中的标准值替换行业字段。和:将州从短期值替换为德克萨斯州,也将国家从美国或美国或美利坚合众国替换为美国。当我手动执行此操作时,我使用了VlookUp函数 例如: 我有电子表格,比如: 第1页,数据: FName LName电子邮件标题城市S

如果可能,我需要有关创建excel宏的帮助,该宏将清理电子表格中的一些字段

我收到了不同数量记录的excel电子表格。在下面的电子表格中,我需要设置诸如名字/姓氏/职位/城市等字段的格式,我在手动设置时使用了excel的适当功能。最重要的是,我还需要用另一张表中的标准值替换行业字段。和:将州从短期值替换为德克萨斯州,也将国家从美国或美国或美利坚合众国替换为美国。当我手动执行此操作时,我使用了VlookUp函数

例如: 我有电子表格,比如:

第1页,数据:

FName LName电子邮件标题城市ST电话行业国家 约翰·smj@hotmail.com德克萨斯州达拉斯5556663344移动电话美国 李洁jess@aol.com英国纽约州纽约6667775656艺术美国 尼克·詹nick@aol.com巴罗利纽约444-3338888理工美国

第2页,说明:

圣徒满 德克萨斯州 纽约 北卡罗来纳州

等->所有美国/加拿大州列表

第3页,行业:

工业-工业-正确 移动通信 艺术其他 科技

等->所有可能变化的列表正确/不正确行业

第4页,国家:

国家 安哥拉 加拿大 俄罗斯联邦 美国

在第四张表中,我列出了200多个国家的字母顺序列表,需要将美国、俄罗斯等国家替换为列表中的专有名称

结果表,期望的内容:

FName LName名称城市ST电话行业国家 约翰Sm It达拉斯德克萨斯555-666-3344美国电信 Jess Lee Ba纽约纽约666-777-5656其他美国 Nick Jahn Ba Raleigh纽约444-333-8888技术联合公司 州

电子邮件 j@hotmail.com jess@aol.com nick@aol.com

我试图录制非常简单的宏;但我有非常不同的电子表格-w。不同数量的记录-从5到2000或3000条记录。
简单录制的宏仅以某种方式清理了固定数量的记录。

听起来您录制的宏工作正常,只是在固定数量的记录上工作。您需要使范围动态化,以便宏可以自动查看有多少行数据。如果没有看到您的代码,就很难告诉您如何实现它。一般来说,像这样的东西会起作用:

Dim sht As Worksheet
Dim LastRow As Long

Set sht = ThisWorkbook.Worksheets("[sheet name]")
'Can also reference the sheet code, which is better in my opinion. Set sht = Sheet1 or whatever number your sheet is. 

'This will fetch the last row for you
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
您可能会发现此网站很有帮助:

回应你的评论: 您应该在代码的一开始就实现这一点。因此,我们要做的是1设置宏的工作表,2确定该工作表中的最后一行数据,3然后需要使用最后一行设置宏要处理的范围,或者至少检查宏并用LastRow替换第1000行。因此,除了我提供的代码之外,您还可能有如下内容:

Dim myRange as Range: Set myRange = sht.Range("A2:Z" & LastRow)
然后,当需要宏在myRange范围内执行某些操作时,只需引用myRange即可。希望有帮助。如果需要的话,你应该能够编辑你的原始文章,添加一些代码,而不是写一篇新文章。
至于你的错误问题,如果没有更多的信息,很难说出最正确的方法。一般来说,我认为最好使用if/else语句,但您当然可以只使用WorksheetFunction.iferror。。。如果需要复制Excel中内置的相同iferror功能

如果您共享录制的宏来清理固定数量的记录,可能会有所帮助。我认为最简单的解决方案是使用索引匹配或VLOOKUPTo Praguian:我录制了许多步骤,使用excel函数清理所有字段。所以,不确定我是否可以在这里发布这个宏。。。另外,我只想澄清一下——我只在输入表中有各种未定义数量的记录——在表1中!这是宏:不幸的是,它太长了,无法共享…给杰克:谢谢!我的问题:在我的宏中,我应该在哪里实现您的建议?我可以发布新的主题w。代码也是……而且,现在,我记录了1000条记录的宏,因为我知道我们的记录永远不会超过1K条,并且使用了IFERROR函数,在该函数中,我添加了我希望在出现错误时显示的内容。但是,我认为,这样做是不恰当的。。。