返回列表 上一主題 發帖

[發問] 請大家幫我看這著資料編排順序的問題

因為你的附件看不出你真正要抓的資料是那一列? (Priority1、Priority2、Priority3 還是 Vendor?)
故程式中直接當作你是要抓 Title 那一列, 你只要變更抓資料的列號即可抓取相對應列中的上述資料了.

以這個例子來說其實只要先取得 Max、Min 與 Middle 的開頭欄號,
再依據表格陸續抓取個別資料的個數搭配起來就可以了.

Sub main()
  Dim iMax%, iMin%, iMid%, iColumn%, iRow%
  Dim iNum%, iI%
  Dim vDatabase, vOutput

  Set vDatabase = Sheets("DATABASE")
  Set vOutput = Sheets("OUTPUT")
  iMax = 182
  iColumn = iMax
  iRow = 70

  With vDatabase
    While Left(.Cells(1, iColumn), 3) = "Max"
      iColumn = iColumn + 1
    Wend
    iMin = iColumn
  
    While Left(.Cells(1, iColumn), 3) = "Min"
      iColumn = iColumn + 1
    Wend
    iMid = iColumn
  End With
  
  iColumn = 3
  With vOutput
    For iNum = 9 To 12
      For iI = 0 To .Cells(2, iNum) - 1
         .Cells(iRow, iColumn) = vDatabase.Cells(1, iMax)
        iMax = iMax + 1
        iColumn = iColumn + 1
      Next iI
   
      For iI = 0 To .Cells(3, iNum) - 1
        .Cells(iRow, iColumn) = vDatabase.Cells(1, iMin)
        iMin = iMin + 1
        iColumn = iColumn + 1
      Next iI
      For iI = 0 To .Cells(4, iNum) - 1
        .Cells(iRow, iColumn) = vDatabase.Cells(1, iMid)
        iMid = iMid + 1
        iColumn = iColumn + 1
      Next iI
    Next iNum
  End With
End Sub

TOP

本帖最後由 luhpro 於 2010-12-15 23:10 編輯

回復 3# sandra_wang
※ 以下的 ixxx 表 iMax、iMin 與 iMiddle

嗯... 先將 iRow = 70 改成 iRow = 71
再將  .Cells(iRow, iColumn) = vDatabase.Cells(1, ixxx)

改成四行
.Cells(iRow, iColumn) = vDatabase.Cells(2, ixxx)
.Cells(iRow + 1, iColumn) = vDatabase.Cells(3, ixxx)
.Cells(iRow + 2, iColumn) = vDatabase.Cells(4, ixxx)
.Cells(iRow + 3, iColumn) = vDatabase.Cells(5, ixxx)

或是改成
Dim iNum%, iLeft%, iI%, iJ%
.
.
.
For iJ = 0 To 3
   .Cells(iRow + iJ, iColumn) = vDatabase.Cells(iJ + 2,  ixxx)
Next iJ

至於
For iNum = 9 To 12

確實只要改成
.
.
iLeft = 9
.
.
.
For iNum = iLeft To iLeft + 8

即可.

我的程式是比較直觀,

Hsieh 大大的程式都很簡潔,

你可以參考看看要用哪個.

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題