我是宏的新手,但我找不到我需要的确切解决方案,并且在组合它们时遇到更多麻烦。我得到这个原始数据报告,需要进行一些更改才能将其输入我们的主数据集进行报告。这些事情需要发生(请参考图片):
如果有人可以帮助提供良好资源的代码或链接,这将允许我使用一个非常棒的宏一次执行所有这些功能。
由于
答案 0 :(得分:0)
使用Power Query而不是VBA可以轻松完成此操作。 Power Query是Microsoft for Excel 2010和2013的免费插件,并作为“获取和转换”内置于Excel 2016中。从概念上讲,步骤是:
将新数据添加到原始数据源时,只需刷新查询即可。所有这些都可以通过单击用户界面中的图标和按钮来实现。无需编码。
答案 1 :(得分:0)
那么,对于第2点,如何录制宏并使用“查找和替换”两次? 这应该将它们组合成一个宏。然后你可以复制其他地方的粘贴。
至于日期,Excel具有转换为美国格式的倾向。首先尝试这个(假设“月 - 年”列是B)
Range("B2") = DateValue(Range("B2"))
然后再应用格式。
答案 2 :(得分:0)
Private Sub mySub()
Dim myRng As Range
Dim r As Range
Dim LastRow As Long
Dim mySheet As Worksheet
Dim myFind1, myFind2 As Variant
Dim myReplace1, myReplace2 As Variant
'This will get the number of rows with value in the sheet
LastRow = Sheets("Sheet1").UsedRange.Rows.Count
'This is for the first find and replace. It will search all cells with exact value of "Medical Div" in the sheet and change it to "Medical".
myFind1 = "Medical Div"
myReplace1 = "Medical"
'This is for the second find and replace. It will search all cells with exact value of "Mental Health Div" in the sheet and change it to "Mental Health".
myFind2 = "Mental Health Div"
myReplace2 = "Mental Health"
'This will loop through the entire column with the date that needs to have the format mmm-yy. It will convert the 04/2017 to date format first before making it Apr-17.
With Sheets("Sheet1")
Set myRng = Sheets("Sheet1").Range("A2:A" & LastRow)
For Each r In myRng
r.Value = CDate(r.Value)
Next r
End With
myRng.NumberFormat = "mmm-yy"
'This will loop through the active worksheet and apply the find and replace declared above.
For Each mySheet In ActiveWorkbook.Worksheets
mySheet.Cells.Replace what:=myFind1, Replacement:=myReplace1, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
mySheet.Cells.Replace what:=myFind2, Replacement:=myReplace2, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next mySheet
End Sub
以下是您可以尝试的代码。
您需要更改范围以满足您的需求。我已将月份列的列设置为A列。如果这是您的日期,则必须将其更改为B列。
这是运行宏之前的数据:
这是运行宏后的数据: