Per*_*ian -6 database excel vba excel-vba
我在这里提供链接:http://quickstats.nass.usda.gov/results/320F1D82-1064-30F1-809E-F77E509EC508.我想学习如何使用Excel VBA中的宏/脚本执行此任务.我自己无法克服的问题是:
1)并非数据中都表示了一年中的所有星期.我不确定如何按特定周对数据进行排序,不确定我需要什么命令.
2)在执行每周计算之前,可以在我的vba脚本中使用Excel函数VLOOKUP来选择所有不同的值,比如Week14或Week15吗?如果是这样,它是如何合并的?我的想法是只在宏中执行VLOOKUP来搜索五种不同的作物条件.
我关于这个主题的第一个问题是关于如何从网站上下载信息,请参阅构建宏以将网站上的数据下载到Excel中.我建议这是第一个按钮,"下载",然后应该有第二个按钮来排序称为"排序"的数据.
CommandButton_1用于下载数据,请参阅链接问题.
Private Sub CommandButton1_Click()
Dim thisWb, downloadWb As Workbook
Set thisWb = ActiveWorkbook
Set downloadWb = Workbooks.Open("http://quickstats.nass.usda.gov/data/spreadsheet/4C43034A-0EAA-3171-B4FC-84CC95FC6E0C.csv")
downloadWb.Worksheets(1).Range("A1:U2613").Copy Destination:=thisWb.Worksheets(3).Range("A8")
downloadWb.Close
End Sub
Run Code Online (Sandbox Code Playgroud)
这非常有效.现在,第二个按钮(排序数据)建议在下面
Private Sub CommandButton2_Click()
Public Function WeekTotal(Condition As String, Table As Range) As Integer
Dim rRow As Range
Dim xVal As Integer
xVal = 0
For Each rRow In Table.Rows
If InStr(LCase(rRow.Cells(1, 10).Value), "very") > 0 And LCase(Condition) = "poor" Then
'skip if row includes 'very', but the condition is 'poor' and not 'very poor'
ElseIf InStr(LCase(rRow.Cells(1, 10).Value), LCase(Condition)) > 0 Then
xVal = xVal + rRow.Cells(1, 13).Value
End If
Next rRow
WeekTotal = xVal
End Function
End Sub
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.这是一张图片,略微改变了列的宽度,是我想要处理的.
小智 5
在我看来,一个宏过于复杂化一个简单的问题.
只需添加一个新列,其中包含VLOOKUP与您的评级对应的值.要实现此目的,您需要一个可以提供此类值的参考范围.(见截图1).
在新工作表中,列出您的周数,并用于SUMIF计算vlookup每个相应周的列中值的总和.(见截图2).
如果您需要进行更复杂的计算,请提供其他详细信息,我将修改此答案以提供帮助.
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |