2015-11-03 77 views
-1

我有一個Excel文檔,我想在行上放置優先級列,但不一定反映行號。我希望能夠在該列中鍵入一個數字,並且會增加其中的所有其他數字。基於已有號碼的自動編號

例如,如果我有四列的行是「2,1,3,4」,並添加一個新行並希望給它一個優先級爲「2」,那麼它會自動更改其他行到「3,1,4,5,2」。

這可能嗎?

+0

您可以發佈示例表嗎?你是什​​麼意思「......列是'2,1,3,4'」? – BruceWayne

+0

我對這個挑戰感到好奇......所以如果我在新一行中添加一個2,那麼舊的兩個會變成三個...任何小於兩個的分數都保持不變?所有等於或大於等於?而「數據」卻沒有分數/排名的行會發生什麼? –

回答

0

如果你使用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,從而使其更加健壯。