返回列表 上一主題 發帖

請問sheet 欄位轉換問題

回復 14# Hsieh


    你好
比對規則是工單加工程來判斷對應的j欄如果是ok
就反紅
Tony

TOP

回復 13# tonycho33

你的項目重複,請說明比對規則
學海無涯_不恥下問

TOP

回復 10# Hsieh


    欄位增加時
反紅對應的儲存格好像會對不到
請問要如何解決呢
謝謝

sheet 欄位轉換 - 複製.rar (16.52 KB)

Tony

TOP

回復 11# tonycho33
  1. Sub 轉置()
  2. Dim A As Range, Ar(), Ay(), i%, j%, Ary(), s&
  3. With Sheets("a")
  4. For Each A In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants) '在A2以下有資料的儲存格做迴圈
  5. Ar = A.Resize(, 4) 'A欄向右擴展成欄的範圍,取得工單、料號、摘要、數量
  6. Ay = .Range(A.Offset(, 6), A.Offset(, 6).End(xlToRight).Offset(2)).Value '從G欄向右到該列資料尾向下2列的範圍存入陣列變數
  7. For i = 1 To UBound(Ay, 2) '迴圈從1開始到資料陣列的欄數
  8. ReDim Preserve Ary(7, s) ',擴展動態陣列此陣列有7列,擴展成s欄
  9. Ary(0, s) = Ar(1, 1): Ary(1, s) = Ar(1, 2): Ary(6, s) = Ar(1, 4) '將工單、料號、數量寫入陣列
  10.    For j = 1 To UBound(Ay, 1)
  11.    Ary(j + 1, s) = Ay(j, i) '將每個工程的3個項目寫入陣列
  12.    Next
  13.    s = s + 1 '準備下次動態陣列擴增的欄數
  14. Next
  15. Next
  16. End With
  17. Sheets("b").UsedRange.Offset(1) = "" '清空原來資料
  18. Sheets("b").[A2].Resize(s, 7) = Application.Transpose(Ary) '將陣列寫入b工作表
  19. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 10# Hsieh

可以解釋一下這一段嗎
真的看不大懂
For i = 1 To UBound(Ay, 2)
ReDim Preserve Ary(7, s)
Ary(0, s) = Ar(1, 1): Ary(1, s) = Ar(1, 2): Ary(6, s) = Ar(1, 4)
   For j = 1 To UBound(Ay, 1)
   Ary(j + 1, s) = Ay(j, i)
   Next
   s = s + 1
Tony

TOP

回復 9# tonycho33


    sheet 欄位轉換.rar (13.16 KB)
學海無涯_不恥下問

TOP

回復 3# Hsieh

你好
請問使用格式化條件的部份,執行下來變得很慢
連捲動捲軸都要等很久
有辦法改成全部都是vba嗎
謝謝
Tony

TOP

回復 7# tonycho33

  工作表使用之公式函數愈多 當然計算會需要一點時間(一百多列其實計算時間應不會太久才對)
也可考慮使用Hsieh超級版主的巨集程式
先自己操作看看 有問題再向Hsieh超級版主請教

TOP

回復 5# register313


利用格式化來處理儲存格的顏色,每個儲存格都設定的話,如果有一百多列,跑起來好像會變慢,有辦法只單純使用VBA嗎
Tony

TOP

請問欄位轉換的VBA程式可以解釋一下嗎?太複雜看不大懂
另外a sheet 欄位都是固定的(4欄),如果是不規則的可以用嗎(例如:3∼15欄)
另外,如果在新增資料的話(目前工單3筆,後續再增加的話)是否也可以用呢
謝謝
Tony

TOP

        靜思自在 : 難行能行,難捨能捨,難為能為,才能昇華自我的人格。
返回列表 上一主題