我有一个包含三列的电子表格; A和B中的值使用公式计算C列中的值,并且我想在列C上对Z-> A进行排序,同时将选择扩展到其他两列。我的目标是在C列中的值发生变化时自动更新排名。我正在寻找能为我写这篇文章的人,我知道JS而不是VBA而且我很难搞清楚因为它并不容易(至少对我而言)。谢谢!
D/LeakCanary: * com.testapp.MainActivity has leaked:
D/LeakCanary: * GC ROOT static android.content.res.Resources.sPreloadedDrawables
D/LeakCanary: * references array android.util.LongSparseArray[].[0]
D/LeakCanary: * references android.util.LongSparseArray.mValues
D/LeakCanary: * references array java.lang.Object[].[2]
D/LeakCanary: * references android.graphics.drawable.InsetDrawable$InsetState.mDrawableState
D/LeakCanary: * references android.graphics.drawable.StateListDrawable$StateListState.mRes
D/LeakCanary: * references android.support.v7.widget.TintResources.mContext
D/LeakCanary: * leaks com.testapp.MainActivity instance
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
Columns("C").Sort Key1:=Range("C2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Application.EnableEvents = True
End If
答案 0 :(得分:0)
将此代码放在VBE中ThisWorkbook
文件夹的Microsoft Excel Objects
模块中。
每次重新计算工作簿时,这将按工作表中的列C排序(在下面的代码中更改名称以适合您的实际工作表)。显然它会发生比需要更多次,但它是确保它自动触发的唯一方法。
如果由于文件大小或“重新计算”的数量而导致性能问题,可能会稍微调整一下,或者可以调整电子表格的设计。
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If sh.Name = "myABCSheet" or sh.Name = "Orders" or sh.Name = "Forecast"
Dim ws As Worksheet
Set ws = Worksheets("myABCSheet") 'change name as needed
With ws
Dim lRow As Long
lRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
With .Sort
With .SortFields
.Clear
.Add ws.Range("C1:C" & lRow), 1, xlAscending
End With
.SetRange ws.Range("A1:C" & lRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
Application.Calculation = xlManual
.Apply
Application.Calculation = xlCalculationAutomatic
End With
End With
Application.EnableEvents = True
End If
End Sub