返回列表 上一主題 發帖

[發問] Excel 編號、分組編號自動更改問題?

[發問] Excel 編號、分組編號自動更改問題?

開始時

1.jpg
2019-8-4 08:10

請問有方法在每一次隨機刪除列數之後
分組編號能自動更改嗎?
例如:當刪除2、3列、分組編號能自動更改成下圖嗎?

刪除後

2.jpg
2019-8-4 08:25

編號我使用=ROW()-1
有高手可以幫忙一下嗎? 謝謝哦!!
有VBA 程式編感謝萬分

請大大幫忙

TOP

你的分組編號邏輯是?

TOP

你的分組編號是沒有規律的嗎?

TOP

一年前的文你問他他會說......我不記得了

TOP

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

TOP

回復 1# 我肥人


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

執行前:  5~7 空6
20230323-1.jpg
2023-3-23 08:20


執行結果:
20230323-2.jpg
2023-3-23 08:20


刪除2.3列: 前後都有空
20230323-3.jpg
2023-3-23 08:21


執行結果:
20230323-4.jpg
2023-3-23 08:22


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
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題