Board logo

標題: [發問] Excel 編號、分組編號自動更改問題? [打印本頁]

作者: 我肥人    時間: 2019-8-4 08:31     標題: Excel 編號、分組編號自動更改問題?

[attach]31116[/attach]
請問有方法在每一次隨機刪除列數之後
分組編號能自動更改嗎?
例如:當刪除2、3列、分組編號能自動更改成下圖嗎?
[attach]31117[/attach]
編號我使用=ROW()-1
有高手可以幫忙一下嗎? 謝謝哦!!
有VBA 程式編感謝萬分
作者: 我肥人    時間: 2019-8-31 23:42

請大大幫忙
作者: monsterpo    時間: 2019-11-21 12:58

你的分組編號邏輯是?
作者: littleqqping    時間: 2020-4-23 23:00

你的分組編號是沒有規律的嗎?
作者: lowt2000    時間: 2020-4-27 18:20

一年前的文你問他他會說......我不記得了
作者: Jogvsae86    時間: 2020-5-5 22:15

哈,應該早忘了
他的意思是原來的分組編號B2=1, B3=1
刪除整列後,希望原來分組編號B4:B6由222, 變成B2:B4=111,因為前面沒有1了
用手機回文手邊沒電腦,有空來試一下看怎麼實現
作者: Andy2483    時間: 2023-3-23 08:25

回復 1# 我肥人


    謝謝前輩發表此主題與範例
後學藉此帖練習陣列與字典,學習到很多知識與經驗,解決方案如下,
請前輩參考,請各位前輩指教

執行前:  5~7 空6
[attach]36008[/attach]

執行結果:
[attach]36009[/attach]

刪除2.3列: 前後都有空
[attach]36010[/attach]

執行結果:
[attach]36011[/attach]

Option Explicit
Sub TEST_1()
Dim Brr, Y, i&, X&, xR As Range
'↑宣告變數:(Brr,Y)是通用型變數,(i,X)是長整數變數,
'xR是儲存格變數

Set xR = Range([B1], Cells(Rows.Count, "A").End(3))
'↑令xR這儲存格變數是 [B1]到A欄最後有內容儲存格,
'xR變數是此範圍的儲存格(物件)

Brr = xR
'↑令Brr這通用型變數是 二維陣列,
'以xR儲存格值帶入Brr陣列中

Set Y = CreateObject("Scripting.Dictionary")
'↑令Y這通用型變數是 字典
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
   Y(Brr(i, 2)) = "": Brr(i, 1) = i - 1
   '↑令i迴圈列第2欄Brr陣列值當key,item是空字元,納入Y字典裡,
   '令i迴圈列第1欄Brr陣列值是 i變數-1

Next
For X = 1 To Y.Count
'↑設順迴圈!i從1到 Y字典key數量數
   For i = 2 To UBound(Brr): Y(Brr(i, 2)) = "": Next
   '↑設順迴圈!i從2到 Brr陣列縱向最大索引列號,
   '令i迴圈列第2欄Brr陣列值當key,item是空字元,納入Y字典裡

   If Y.Exists(X) = Empty Then
   '↑如果Y字典裡沒有X變數這key?
      For i = 2 To UBound(Brr)
      '↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
         If Brr(i, 2) > X Then Brr(i, 2) = Brr(i, 2) - 1
         '↑如果i迴圈列第2欄Brr陣列值大於 X變數!
         '就令i迴圈列第2欄Brr陣列值 -1

      Next
      X = X - 1
      '↑令X變數 -1
   End If
   Y.RemoveAll
   '↑令Y字典清空
Next
xR.Offset(, 3) = Brr
'↑令xR變數向右偏移3欄的範圍儲存格值以Brr陣列值帶入
Set Y = Nothing: Erase Brr: Set xR = Nothing
'↑令釋放變數
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)