Excel中按值自动排序单元格
我想根据一列中的一组单元格在另一列中的值对它们进行排序Excel中按值自动排序单元格,excel,vba,vbscript,Excel,Vba,Vbscript,我想根据一列中的一组单元格在另一列中的值对它们进行排序 K L M N 1 Italy 10000 China 80000 2 Spain 2000 Russia 1000 3 UK 300 India 300 4 France 40 Pakistan 50 我的想法是根据L1到L4和M1到N4对值的范围进行排序,即从K1到K4,因此,如果我现在更改西班牙和/或俄罗斯
K L M N
1 Italy 10000 China 80000
2 Spain 2000 Russia 1000
3 UK 300 India 300
4 France 40 Pakistan 50
我的想法是根据L1
到L4
和M1
到N4
对值的范围进行排序,即从K1
到K4
,因此,如果我现在更改西班牙和/或俄罗斯的值,我将
K L M N
1 Spain 40000 Russia 100000
2 Italy 10000 China 80000
3 UK 300 India 300
4 France 40 Pakistan 50
此外,列L1:L4
和N1:N4
的值取决于其他单元格和公式。我尝试了以下脚本,它部分工作,但是当通过其他单元格修改L
或N
的值时,列K
和M
不会排序
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("K1:L4")) Is Nothing Then
If Target.Offset(, -1) <> vbNullString Then
Range("K1:L4").Sort Key1:=Range("L1"), Order1:=xlDescending, Header:=xlNo
End If
End If
If Not Intersect(Target, Range("M1:N4")) Is Nothing Then
If Target.Offset(, -1) <> vbNullString Then
Range("M1:N4").Sort Key1:=Range("N1"), Order1:=xlDescending, Header:=xlNo
End If
End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果不相交(目标,范围(“K1:L4”))则为零
如果Target.Offset(,-1)为vbNullString,则
范围(“K1:L4”)。排序键1:=范围(“L1”),顺序1:=xl降序,标题:=xlNo
如果结束
如果结束
如果不相交(目标,范围(“M1:N4”))则为零
如果Target.Offset(,-1)为vbNullString,则
范围(“M1:N4”)。排序键1:=范围(“N1”)、顺序1:=xl降序,标题:=xlNo
如果结束
如果结束
端接头
有什么想法吗
如果需要自动排序,则需要使用VBA或基于表格创建另一个表格(提示,您可以使用大函数和vLookup函数)假设您的国家/地区在A1:A8,您的值在B1:B8,然后在C1:C8中输入1或2,以确定该国家/地区应出现在哪个列中 现在在L列中,获取第1列值中的最大值。在L1中,输入数组:
=LARGE(($C$1:$C$8=1)*($B$1:$B$8),ROW())
然后填到L4。然后在K1中,检索与该值关联的国家:
=INDEX($A$1:$A$8,MATCH(L1,$B$1:$B$8,FALSE),1)
然后填到K4。然后在N和M中执行相同的操作,除了第2列的值
如果您担心重复,那么在所有值中添加非常少量的值。为此,请更改L1公式(不要忘记输入数组)
并将K1公式更改为
=INDEX($A$1:$A$8,MATCH(INT(L1),$B$1:$B$8,FALSE),1)
@_user2633359是的,但理想情况下,我希望它是自动的
=INDEX($A$1:$A$8,MATCH(INT(L1),$B$1:$B$8,FALSE),1)