|
本帖最后由 雨后彩霞 于 2013-11-13 20:22 编辑
Sub DataPacket(rgSource As Range, rgDest As Range, bGroupCount As Byte)
Dim arr()
Dim brr()
Dim lx, y, rg, k
Set rgSource = Application.InputBox("请选择需要分组的单元格区域", "选择", Type:=8)
If rgSource Is Nothing Then '如果 rgSource 是 空值 则执行
MsgBox "没有选择要分组的单元格区域"
Exit Sub
End If
arr = rgSource.Value 'arr= rgSource的值
Set rgDest = Application.InputBox("请选择分组数据写入的位置", "选择", Type:=8)
If rgDest Is Nothing Then '如果 rgDest 是 空值 则执行
MsgBox "没有选择要分组的单元格区域" '<消息框>:"没有选择要分组的单元格区域"
Exit Sub '退出子程序
End If
bGroupCount = Application.InputBox("请输入要分成的行数(>=1)", "选择", Default:=2, Type:=2)
lx = (rgSource.Count + bGroupCount) \ bGroupCount 'lx=( rgSource的计数值+bGroupCount)\bGroupCount
ReDim brr(1 To bGroupCount, 1 To lx) '重定义变量brr(1到bGroupCount,1到lx)
For Each rg In arr '设定变量范围为每一个rg位于arr'遍历数据源数组Arr
k = k + 1 '计数器
brr(Int((k - 1) / lx) + 1, ((k - 1) Mod lx) + 1) = rg 'brr(<取整>((k-1)/lx)+1,((k-1)Modlx)+1)=rg'将数据源里的数据分别写入结果数组brr中
Next rg
rgDest.Resize(UBound(brr, 1), UBound(brr, 2)) = brr ' rgDest的<重调大小>(<数组上限>(brr,1),<数组上限>(brr,2))=brr
End Sub
Sub 查询天气()
Dim strDate$
Dim strUrl$
Dim strText$
Dim strFind$
Dim i As Long, v, k%, t, j%, l%
strUrl = "http://lishi.tianqi.com/wuhan/"
'查询的网址
strDate = Application.InputBox("请输入要查询的年月格式为YYYYMM" & vbCr & vbCr & "例如:201102" & vbCr & vbCr, , Format(DateAdd("m", -1, Now), "yyyymm"), , , , , 2)
'查询的年月,输入格式为YYYYMM
Dim httpRequest As Object
Set httpRequest = CreateObject("Msxml2.XMLHTTP.3.0")
'创建XMLHTTP对象,获取网页数据
'网页数据存储在变量 strText 中
With httpRequest
.Open "GET", strUrl & strDate & ".html", False
.send
strText = .responseText
End With
strFind = "武汉" & Left(strDate, 4) & "年" & Val(Right(strDate, 2)) & "月份天气详情"
'检测输入的日期是否合格
i = InStr(strText, strFind)
If i = 0 Then
MsgBox "查询月份不对"
Exit Sub
End If
'-------------------------代码需完成部分---------------------------
'上面的代码和声明部分不得修改
'代码完成部分所需要的变量声明均写在此行下方即可,方便学委评分
Sheets("作业二结果").Range("A1:F600").ClearContents '<工作表>("作业二结果" )的<单元格>区域("A1:F600" )的清除内容
v = Split(strText, "<li>风力</li>") 'v=<分割字符串>(strText,"<li>风力</li>")
v = Split(v(1), "<div style=""clear:both""></div>") 'v=<分割字符串>(v(1),"<div style=""clear:both""></div>")
v = Split(v(0), ".html"">") 'v=<分割字符串>(v(0),".html"">")
Sheets("作业二结果").[A1] = strFind '<工作表>("作业二结果" )的[A1]=strFind
Sheets("作业二结果").Range("A2:F2") = Split("日期 最高气温 最低气温 天气 风向 风力", " ") '<工作表>("作业二结果" )的<单元格>区域("A2:F2")=<分割字符串>("日期 最高气温 最低气温 天气 风向 风力"," ")
For i = 1 To UBound(v) '设定变量范围为i=1到<数组上限>(v)
k = InStr(v(i), "<") 'k=<正向判断字符串出现位置>(v(i),"<")
Sheets("作业二结果").Cells(i + 2, 1) = Left(v(i), k - 1) '<工作表>("作业二结果" )的<单元格>坐标(i+2,1)=<截取字符串左侧>(v(i),k-1)
t = Split(v(i), "<li>") 't=<分割字符串>(v(i),"<li>")
For j = 1 To UBound(t) '设定变量范围为j=1到<数组上限>(t)
k = InStr(t(j), "<") 'k=<正向判断字符串出现位置>(t(j),"<")
Sheets("作业二结果").Cells(i + 2, j + 1) = Left(t(j), k - 1) '<工作表>("作业二结果" )的<单元格>坐标(i+2,j+1)=<截取字符串左侧>(t(j),k-1)
Next
Next
'------------------------------------------------------------------
MsgBox "提取完成"
End Sub
|
评分
-
查看全部评分
|