如果可能的话,我需要帮助创建excel宏,它将清理电子表格中的某些字段。
我正在接收包含不同记录数量的excel电子表格。在以下电子表格中,我需要格式化名字 / 姓氏 / 职位名称 / 城市等字段(当我手动完成时,我使用了excel Proper()函数。最重要的是,我还需要用另一张表中的标准值替换行业字段。并且:取代州(从短值,如TX到德克萨斯州),也将国家从我们或美国或美国取代为“美国”。 (当我手动执行此操作时,我使用了VlookUp()函数)。
实施例: 我有电子表格,如:
表1,数据:
FName LName Email Title City ST Phone Industry Country
John sm j@hotmail.com it dallas TX 5556663344 mobile us
jess lee jess@aol.com ba ny ny 6667775656 art usa
nick Jahn nick@aol.com ba raleigh ny 444-3338888 tech us
Sheet2,State:
ST ST_Full
TX Texas
NY New York
NC North Carolina
等。 - >所有美国/加拿大州名单
工作表3,行业:
Industry Industry_Correct
Mobile Telecom
Art Other
Tech Technology
等。 - >所有可能的变化列表正确/不正确的行业
表4,国家:
Country
Angola
Canada
Russian Federation
United States
对于表4,我有200多个国家的字母顺序列表,需要将“us”“Russia”等国家替换为名单中的正确名称。
结果表,(期望有什么):
FName LName Title City ST Phone Industry Country
John Sm It Dallas Texas 555-666-3344 Telecom United States
Jess Lee Ba New York New York 666-777-5656 Other United States
Nick Jahn Ba Raleigh New York 444-333-8888 Technology United
States
email
j@hotmail.com
jess@aol.com
nick@aol.com
我试图记录非常简单的宏;但我有非常不同的电子表格 - w。不同数量的记录 - 从5到2000或3000条记录。 简单记录的宏只能以某种方式清除FIXED数量的记录。
答案 0 :(得分:0)
听起来你的录制宏工作正常,只是它正在处理固定数量的记录。您需要使范围动态化,以便宏可以自动查看有多少行数据。没有看到您的代码,很难告诉您如何实现这一点。一般来说,这样的事情会起到作用:
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。希望有所帮助。您应该能够编辑原始帖子,以便在必要时添加一些代码,而不是发布新帖子。 至于你的IFERROR问题,如果没有更多的信息,很难说最正确的方法。一般来说,我认为最好使用if / else语句,但如果需要复制内置于Excel中的相同iferror功能,则可以使用WorksheetFunction.iferror(...)。