我想根据另一个单元(”sheet2“)对单页(”sheet1“)进行排序,因此将单元格相应地移动到另一个单元格中的单元格移动。“根据另一个(excel 2011)”排序“VBA单页(excel 2011)
例子:
Sheet1: A45 contains number: 3
sheet2: A45 contains number: 200
排序(全部)Sheet2的(升序,按列)(它代表百余列)
sheet2 A45 (200) moves to A98
我想它做的举动:
sheet1 A45 (3) to A98
今天我正在尝试这个,我知道它的工作原理,但只有PC excel 2003(法语),我不知道为什么它d OES与Mac的Excel 2011(英文)工作:
Sub Test()
Dim PlageFe1 As Range
Dim PlageFe2 As Range
Dim Tbl()
Dim I As Long
'plage en colonne A de la Feuille "Feuil1"
With Worksheets("Feuil1")
Set PlageFe1 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'plage en colonne A de la Feuille "Feuil2"
With Worksheets("Feuil2")
Set PlageFe2 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'dimensionne le tableau par rapport à une des deux plages (ici la 1)
ReDim Tbl(1 To 2, 1 To PlageFe1.Count)
'fusionne les deux plages dans le tableau
For I = 1 To UBound(Tbl, 2)
Tbl(1, I) = PlageFe1(I)
Tbl(2, I) = PlageFe2(I)
Next I
'effectue le tri (adapter le signe <ou> dans la porc "Tri")
Tri Tbl()
'puis réaffecte les valeurs
For I = 1 To UBound(Tbl, 2)
PlageFe1(I) = Tbl(1, I)
PlageFe2(I) = Tbl(2, I)
Next I
End Sub
Sub Tri(Tbl())
Dim Tempo1, Tempo2
Dim I As Long, J As Long
'éffectue un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl, 2) - 1
For J = I + 1 To UBound(Tbl, 2)
'tri sur l'index 1
If Tbl(1, I) > Tbl(1, J) Then
Tempo1 = Tbl(1, J)
Tempo2 = Tbl(2, J)
Tbl(1, J) = Tbl(1, I)
Tbl(2, J) = Tbl(2, I)
Tbl(1, I) = Tempo1
Tbl(2, I) = Tempo2
End If
Next J, I
End Sub
两张表如何相互关联?两张表中是否有一列或多列具有相同的唯一值?或者他们只是按照现在的位置相关联? –
本网站不适用于整个代码项目的请求;这是针对具体问题。你有没有尝试过,并在特定的时间点失败?你成功/失败的地方在哪里? –
这两张表都没有关系,所以例外的位置。我很抱歉,但我是VBA的新手,自3周以来我一直在努力寻找网络。从那时起我已经做了几次尝试(主要使用间接... ... – user5441091