返回列表 上一主題 發帖

[發問] 資料相隔列數不一樣的資料整理

本帖最後由 yen956 於 2014-3-11 14:44 編輯

公式太難了, 只好用VBA 試試看:
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim start1, end1, 空白列 As Long, Rng, findcell As Range
  4.     Dim cour As Integer
  5.     start1 = 1
  6.    
  7.     '[A65536].End(xlUp)→由下往上找, 直到找到非空白格為止
  8.     end1 = [A65536].End(xlUp).Row
  9.     Do
  10.         Set Rng = Cells(start1, 1).Resize(end1 - start1 + 1, 1)
  11.               Set findcell = Rng.Find(What:="name", _
  12.               After:=Cells(start1, 1), _
  13.               LookIn:=xlValues, _
  14.               LookAt:=xlPart).Offset(1, 0)
  15.         
  16.         If Not findcell Is Nothing Then
  17.             空白列 = [i65536].End(xlUp).Row + 1
  18.             Cells(空白列, 9) = findcell.Offset(-1, 1)
  19.             Do               
  20.                 '假定最多只有9科才成立
  21.                 cour = Val(Mid(findcell, 7, 1))
  22.                 Cells(空白列, 9).Offset(0, cour * 2 - 1) = findcell.Offset(0, 1)
  23.                 Cells(空白列, 9).Offset(0, cour * 2) = findcell.Offset(0, 4)
  24.                 Set findcell = findcell.Offset(1, 0)
  25.             Loop Until findcell = ""
  26.         End If
  27.         start1 = findcell.Row
  28.     Loop Until findcell Is Nothing Or start1 > end1
  29. End Sub
複製代碼

TOP

回復 5# Hsieh
版大你好:
我下載2f的檔案, 打開結果如下:

將 "_xlfn." 消去後, 也未見改善, 是本版的問題嗎? 謝謝!!
(我的是Excel 2003)

TOP

回復 9# Hsieh
版大你好, 是的我的是2003, 謝謝回覆!!

TOP

回復 8# missbb
試試看結果如下(我試過了, 應該沒問題):
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim blankRow, endRow As Long
  4.     Dim i As Integer
  5.    
  6.     '[A65536].End(xlUp)→由下往上找, 直到找到非空白格為止
  7.     endRow = [A65536].End(xlUp).Row
  8.    
  9.     'FYxxxx 可能不只一個
  10.     [O3] = "=MATCH(R2C15,R1C17:R1C50)+15"
  11.     i = 1
  12.     Do
  13.         i = i + 1
  14.         If Cells(i, 1) = "Employee No." Then
  15.             blankRow = [P65536].End(xlUp).Row + 1
  16.             Cells(blankRow, 16) = Cells(i, 6)
  17.             Do
  18.                 i = i + 1
  19.                 If Left(Cells(i, 1), 2) = "FY" Then
  20.                     [O2] = Cells(i, 1)
  21.                     Cells(blankRow, [O3]) = Cells(i, 10)
  22.                     Cells(blankRow, [O3] + 1) = Cells(i, 12)
  23.                     
  24.                 End If
  25.             Loop Until i >= endRow Or Cells(i + 1, 1) = "Employee No."
  26.             If i >= endRow Then Exit Sub
  27.         End If
  28.     Loop Until i >= endRow
  29. End Sub
複製代碼

TOP

回復 12# missbb
深感抱歉, 我也正在會學公式. 幫不上忙.

TOP

回復 8# missbb
大大你好:
你的course3.xlsx檔案第43行, 如下:
FY13M2                                          FY13M2                          10.01.2013          C75                  E40
是不是忘了標示為Employee No.120008的顏色,
或是第三筆不用處理?

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題