-1
我有一個Excel文檔,我想在行上放置優先級列,但不一定反映行號。我希望能夠在該列中鍵入一個數字,並且會增加其中的所有其他數字。基於已有號碼的自動編號
例如,如果我有四列的行是「2,1,3,4」,並添加一個新行並希望給它一個優先級爲「2」,那麼它會自動更改其他行到「3,1,4,5,2」。
這可能嗎?
我有一個Excel文檔,我想在行上放置優先級列,但不一定反映行號。我希望能夠在該列中鍵入一個數字,並且會增加其中的所有其他數字。基於已有號碼的自動編號
例如,如果我有四列的行是「2,1,3,4」,並添加一個新行並希望給它一個優先級爲「2」,那麼它會自動更改其他行到「3,1,4,5,2」。
這可能嗎?
如果你使用VBA宏,這是可能的。
假設這是你的意思是正確的嗎?
前:
2
1
3
4
後:
3 <--- increased by 1
1 <--- unchanged as its less than 2
4 <--- increased by 1
5 <--- increased by 1
2 <--- newly added
如果是使用下面的VBA代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Application.EnableEvents = False
'I am assuming Column A is the priority column
If (Target.Columns.Count = 1 And Target.Column = 1 And Target.Rows.Count = 1) Then
If (IsNumeric(Target.Value)) Then
'Make sure the value is greater than 0
If (Target.Value > 0) Then
'Check every existing row
For Each cell In Target.Worksheet.UsedRange.Columns(1).Rows
'Skip the existing row we just added
If (cell.row <> Target.row) Then
'Increment the priority by one for all cells greater or equal to the new one
If (IsNumeric(cell.Value)) Then
If (cell.Value >= Target.Value) Then
cell.Value = cell.Value + 1
End If
End If
End If
Next cell
End If
End If
End If
Application.EnableEvents = True
End Sub
注:此示例不檢查,看是否優先級別已經存在,它假定沒有「空白」。如果您願意,可以通過首先檢查以確定優先級是否存在,然後將所有內容遞增1,從而使其更加健壯。
您可以發佈示例表嗎?你是什麼意思「......列是'2,1,3,4'」? – BruceWayne
我對這個挑戰感到好奇......所以如果我在新一行中添加一個2,那麼舊的兩個會變成三個...任何小於兩個的分數都保持不變?所有等於或大於等於?而「數據」卻沒有分數/排名的行會發生什麼? –