返回列表 上一主題 發帖

[發問] 請問EXCEL VBA是否有辦法做到十大項目的細項功能...?

[發問] 請問EXCEL VBA是否有辦法做到十大項目的細項功能...?

本帖最後由 Haven 於 2016-3-23 02:34 編輯

各位大大好,先為本人的表達能力不足道歉...
小魯工作上需求,需要將每日的異常紀錄↓

整理成以下表格的格式↓

想請問是否有辦法可將樞紐分析表轉換成「橫式」
(↓把樞紐自動變成)

(↓變成這種橫式)

或是VBA有辦法自動抓取固定位置的數據來篩選
還是有其他方式可以達成副檔的目標表格...
感謝各位的教導!

附檔:
EXCEL VBA 發問.zip (21.58 KB)

不好意思,表達能力真的比較差...其實比較想問的是怎麼把資料先分成前十大問題設備,再針對前十大設備的缺失項目排成這樣的格式QQ...

很感謝大大的教學~!!!真的感激涕零!!!
上面的程式排法效率真的好高!!

TOP

回復 2# stillfish00
發文三分鐘禁止修改Orz

大大非常抱歉...
還少了一項條件需要調整...

變成這樣...

很抱歉,最近都沒睡好太迷糊...Orz

按照異常頻率最高的設備依序排比後選出前十大異常設備...
重新附檔...非常抱歉QQ
EXCEL發問.zip (10.98 KB)

TOP

感謝大大指導...前陣子工作的地方沒辦法上網...
一直沒回應很抱歉...囧

TOP

不好意思 多次麻煩...想再次詢問...我用大大的編碼做整理
最近發現,似乎有跳名次的狀況出現
下圖左邊是大大的編碼所排出的前十大NG設備,右邊是樞紐分析表排出的十大NG設備

最右邊的是設備的排名...
  1. Dim ar, dMachines As Object, dTemp As Object
  2.     ar = [a1].CurrentRegion.Value
  3.     Set dMachines = CreateObject("scripting.dictionary")
  4.     Set dBelong = CreateObject("scripting.dictionary")
  5.     For i = 2 To UBound(ar)
  6.         If Not dMachines.exists(ar(i, 3)) Then
  7.             Set dTemp = CreateObject("scripting.dictionary")
  8.             dMachines.Add ar(i, 3), dTemp
  9.         Else
  10.             Set dTemp = dMachines(ar(i, 3))
  11.         End If
  12.         dTemp(ar(i, 2)) = dTemp(ar(i, 2)) + 1
  13.         dBelong(ar(i, 3)) = ar(i, 1)
  14.     Next
  15.    
  16.     Dim s As String, cnt As Integer
  17.     For Each x In dMachines.keys
  18.         s = "": cnt = 0
  19.         Set dTemp = dMachines(x)
  20.         For Each y In dTemp.keys
  21.             s = s & IIf(Len(s) = 0, "", ",") & y & "*" & dTemp(y)
  22.             cnt = cnt + dTemp(y)
  23.         Next
  24.         dMachines(x) = Array(x, s, "煩請" & dBelong(x) & "協助確認設備情形", cnt)
  25.     Next
  26.    
  27.     'Output
  28.     With Sheets.Add
  29.     ActiveSheet.Name = "NG設備(表格)"
  30.         cnt = dMachines.Count
  31.         With .[a1]
  32.             .Cells(1, 2).Resize(cnt, 4) = Application.Transpose(Application.Transpose(dMachines.items))
  33.             .Resize(cnt, 5).Sort .Cells(1, 5), xlDescending ', , .Cells(1, 2), xlAscending
  34.             .Cells(1, 5).EntireColumn.ClearContents
  35.             If cnt > 10 Then
  36.                 .Offset(10).Resize(cnt - 10, 4).ClearContents
  37.                 cnt = 10
  38.             End If
  39.             .Value = Format(Now() - 1, "m月d日")
  40.             .Resize(cnt).Merge
  41.         End With
  42.     End With
複製代碼
目前是有小改編碼...
請問大大這樣的狀況該如何解QQ?

PS.抱歉實際設備名稱因保密條約得避免公開...造成不便很抱歉...

TOP

已解決...感謝QQ

TOP

        靜思自在 : 每天無所事事,是人生的消費者,積極、有用才是人生的創造者。
返回列表 上一主題