麻辣家族討論版版's Archiver

我肥人 發表於 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

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=109374&ptid=21986]1#[/url] [i]我肥人[/i] [/b]


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

執行前:  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
[color=SeaGreen]'↑宣告變數:(Brr,Y)是通用型變數,(i,X)是長整數變數,
'xR是儲存格變數[/color]
Set xR = Range([B1], Cells(Rows.Count, "A").End(3))
[color=SeaGreen]'↑令xR這儲存格變數是 [B1]到A欄最後有內容儲存格,
'xR變數是此範圍的儲存格(物件)[/color]
Brr = xR
[color=SeaGreen]'↑令Brr這通用型變數是 二維陣列,
'以xR儲存格值帶入Brr陣列中[/color]
Set Y = CreateObject("Scripting.Dictionary")
[color=SeaGreen]'↑令Y這通用型變數是 字典[/color]
For i = 2 To UBound(Brr)
[color=SeaGreen]'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號[/color]
   Y(Brr(i, 2)) = "": Brr(i, 1) = i - 1
[color=SeaGreen]   '↑令i迴圈列第2欄Brr陣列值當key,item是空字元,納入Y字典裡,
   '令i迴圈列第1欄Brr陣列值是 i變數-1[/color]
Next
For X = 1 To Y.Count
[color=SeaGreen]'↑設順迴圈!i從1到 Y字典key數量數[/color]
   For i = 2 To UBound(Brr): Y(Brr(i, 2)) = "": Next
[color=SeaGreen]   '↑設順迴圈!i從2到 Brr陣列縱向最大索引列號,
   '令i迴圈列第2欄Brr陣列值當key,item是空字元,納入Y字典裡[/color]
   If Y.Exists(X) = Empty Then
[color=SeaGreen]   '↑如果Y字典裡沒有X變數這key?[/color]
      For i = 2 To UBound(Brr)
[color=SeaGreen]      '↑設順迴圈!i從2到 Brr陣列縱向最大索引列號[/color]
         If Brr(i, 2) > X Then Brr(i, 2) = Brr(i, 2) - 1
[color=SeaGreen]         '↑如果i迴圈列第2欄Brr陣列值大於 X變數!
         '就令i迴圈列第2欄Brr陣列值 -1[/color]
      Next
      X = X - 1
[color=SeaGreen]      '↑令X變數 -1[/color]
   End If
   Y.RemoveAll
[color=SeaGreen]   '↑令Y字典清空[/color]
Next
xR.Offset(, 3) = Brr
[color=SeaGreen]'↑令xR變數向右偏移3欄的範圍儲存格值以Brr陣列值帶入[/color]
Set Y = Nothing: Erase Brr: Set xR = Nothing
[color=SeaGreen]'↑令釋放變數[/color]
End Sub

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供