Board logo

標題: [發問] 如何在A欄 自動填上編號 [打印本頁]

作者: aoss98    時間: 2010-7-27 20:47     標題: 如何在A欄 自動填上編號

如何在A欄 自動填上編號,請各位高手指敎這程式碼如何寫? 謝謝!!
A欄          B欄
               1234
               23
               123

               234
               567
               
               123
               678
               4567
               185

完成後
A欄          B欄
1             1234
1             23
1             123

2             234
2             567
               
3             123
3             678
3             4567
3             185
作者: basarasy    時間: 2010-7-27 21:14

回復 1# aoss98
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro   
  4. MyBRow = 1
  5. MyANo = 1   
  6.    
  7.     Range("B65536").Select
  8.    Selection.End(xlUp).Select   
  9.    MyRow = Selection.Row   
  10.     Do   
  11.     If Range("B" & MyBRow).Value = "" Then   
  12.     MyBRow = MyBRow + 1   
  13.     MyANo = MyANo + 1
  14.     Else     
  15.     Range("A" & MyBRow).Value = MyANo   
  16.     MyBRow = MyBRow + 1        
  17.     End If   
  18.     Loop Until MyBRow = MyRow + 1           
  19. End Sub
複製代碼
我只會用一般的vba ><
作者: luhpro    時間: 2010-7-27 21:27

Dim iI%, iNum%, bCheck As Boolean, bNext As Boolean

  iI = 0
  iNum = 1
  bNext = False
  bCheck = True

  With Sheets(1)
    While bCheck
      iI = iI + 1
      If .Cells(iI, 2) <> "" Then
        .Cells(iI, 1) = iNum
        bNext = False
      Else
        If bNext = True Then
          bCheck = False
        Else
          iNum = iNum + 1
          bNext = True
        End If
      End If
    Wend
  End With

單純針對每一個可能列出要做的事,
然後注意不要出現無限迴圈即可.
作者: kimbal    時間: 2010-7-27 21:43

這個不一定要用vba
假設開始在 A2 (即B2=1234)
在A2 輸個 1 (因為B2有東西)
在A3 輸這個公式 = IF(B3="", "", IF( A2="", A1+1 , A2 ))
作者: aoss98    時間: 2010-7-27 21:45

謝謝 basarasy, luhpro 兩位指敎,問題已解決!!
作者: Hsieh    時間: 2010-7-27 22:22

回復 1# aoss98
  1. Sub nn()
  2. Set Rng = Range([B1], [B65536].End(xlUp)).SpecialCells(xlCellTypeConstants)
  3. For i = 1 To Rng.Areas.Count
  4.    Set a = Rng.Areas(i)
  5.    For Each b In a
  6.       b.Offset(, -1) = i
  7.    Next
  8. Next
  9. End Sub
複製代碼

作者: aoss98    時間: 2010-7-27 23:19

謝謝各位指教!!!
作者: john2006168    時間: 2010-7-29 00:12

本帖最後由 john2006168 於 2010-7-29 00:50 編輯
回復  aoss98
Hsieh 發表於 2010-7-27 22:22


[attach]2051[/attach]
    老師,我有類似的問題相同的問題,請問用VBA怎麼寫
作者: Hsieh    時間: 2010-7-29 00:24

回復 8# john2006168
  1. Sub nn()
  2. Dim Rng As Range
  3. [A10].Insert xlToRight
  4. [A10] = "plt no"
  5. Set Rng = Range([A11], [A65536].End(xlUp)).SpecialCells(xlCellTypeConstants)
  6. For i = 1 To Rng.Areas.Count
  7. mystr = Rng.Areas(i).Address
  8.    Rng.Areas(i).Insert xlToRight
  9.    Range(mystr).Value = i
  10. Next
  11. Range([A11], [A65536].End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  12. End Sub
複製代碼

作者: john2006168    時間: 2010-7-29 01:04

回復 9# Hsieh


    老師如果plt no用01 ,02,03表示,應該怎麼改
作者: Hsieh    時間: 2010-7-29 10:34

回復 10# john2006168
  1. Sub nn()
  2. Dim Rng As Range
  3. [A10].Insert xlToRight
  4. [A10] = "plt no"
  5. Set Rng = Range([A11], [A65536].End(xlUp)).SpecialCells(xlCellTypeConstants)
  6. For i = 1 To Rng.Areas.Count
  7. mystr = Rng.Areas(i).Address
  8.    Rng.Areas(i).Insert xlToRight
  9.    Range(mystr).Value =format( i,"'00")
  10. Next
  11. Range([A11], [A65536].End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  12. End Sub
複製代碼

作者: john2006168    時間: 2010-7-29 11:16

[attach]2056[/attach]回復 11# Hsieh


    多謝老師,另外我想將plt no 加上ref no好像sheet02,請再三幫忙[attach]2056[/attach]
作者: kimbal    時間: 2010-7-29 13:18

本帖最後由 kimbal 於 2010-7-29 13:28 編輯

加在f欄
  1. Sub nn()
  2. Dim Rng As Range
  3. [A10].Insert xlToRight
  4. [A10] = "plt no"
  5. Set Rng = Range([A11], [A65536].End(xlUp)).SpecialCells(xlCellTypeConstants)
  6. For i = 1 To Rng.Areas.Count
  7.    mystr = Rng.Areas(i).Address
  8.    Rng.Areas(i).Insert xlToRight
  9.    Range(mystr).Value =format( i,"'00")
  10. Next
  11. Range([A11], [A65536].End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

  12. For Each c In Range([A10], [A65536].End(xlUp)).Offset(0, 5)
  13. c.Value = c.Offset(0, -5).Value & c.Offset(0, -1).Value
  14. Next
  15. End Sub
複製代碼

作者: john2006168    時間: 2010-7-29 13:55

回復 13# kimbal

thanks ,如果我想在sheet2 show 出來應該怎麼寫
作者: kimbal    時間: 2010-7-29 20:30

回復 14# john2006168

  1. For Each c In Range([A10], [A65536].End(xlUp)).Offset(0, 5)
  2. c.Value = c.Offset(0, -5).Value & c.Offset(0, -1).Value
  3. Next
複製代碼
換成
  1. i=0
  2. For Each c In Range([A10], [A65536].End(xlUp)).Offset(0, 5)
  3. i=i+1
  4. worksheets("sheet2").range("e1").offset(i) = c.Offset(0, -5).Value & c.Offset(0, -1).Value
  5. Next
複製代碼





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