就例如下面的,怎么把图1通过函数变成图2,如果excel不行可不可以用其他软件
假设我的表名“区划”,在EFG三列中显示整理后的数据
右键表名【区划】,点击查看代码
输入以下代码:
Sub 区划整理()
Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim n As Integer
n = Application.CountA(Range("A:A"))
i = 1
x = 1
Do While i <= n
If Cells(i, 1) = "中国" Then
Cells(x, 5) = Cells(i, 1)
Cells(x, 6) = Cells(i, 2)
j = 1
Do While j <= n
If Cells(j, 1) = Cells(i, 2) Then
Cells(x, 7) = Cells(j, 2)
x = x + 1
End If
j = j + 1
Loop
End If
i = i + 1
Loop
End Sub
3.保存,会提示是否启用宏功能,选“是”
4.【视图】——【宏】——【查看宏】,选择刚才编写的宏【区划整理】,点击执行。
追问这个如果最上层的不只是中国怎么代码要怎么编呢
追答看你具体数据。
追问就比如不只有中国还有美国英国,那那个代码上就不能写=“中国”了吧
追答对的,你可以先根据A列做一个排序,然后把
If Cells(i, 1) = "中国" Then
改成
If Cells(i, 1) = "中国" or Cells(i, 1) = "美国" or Cells(i, 1) = "英国"Then
如果有更多的国别的话,可以使用辅助列
辅助列是个什么呢
追答比如在C列手动做一个辅助:当A列是国别时,C列相应位置的值就填1,这样,只要判断C列的值是否为1,就等于判断A列的值是否是国别。
If Cells(i, 1) = "中国" Then
就改成
If Cells(i, 3) = 1 Then
另外也可以手动建立一个数组,包含所有国别名称,然后判断A列的值是否属于这个数组。