返回列表 上一主題 發帖

[發問] 對應欄位問題

[發問] 對應欄位問題

要怎麼將如圖的對應欄位,變成像工作表2都寫在同一個儲存格裡 (0以外的才要)

可以設置一開啟EXCEL就自動跑好嗎?

test300.rar (7.49 KB)

  1. Private Sub Workbook_Open()
  2.     Dim arA, arB, x%, y%, s$
  3.     Sheets("工作表2").Activate
  4.     [a1].CurrentRegion.Offset(1).ClearContents
  5.     arA = Sheets("工作表1").UsedRange
  6.     ReDim arB(1 To UBound(arA, 2) - 1, 1 To 2)
  7.     For y = 2 To UBound(arA, 2)
  8.         arB(y - 1, 1) = arA(1, y)
  9.         For x = 3 To UBound(arA)
  10.             If arA(x, y) <> 0 Then
  11.                 s = IIf(arA(x, y) > 0, arA(x, 1) & "+" & arA(x, y), arA(x, 1) & arA(x, y))
  12.                 arB(y - 1, 2) = IIf(arB(y - 1, 2) = "", s, arB(y - 1, 2) & " , " & s)
  13.             End If
  14.         Next
  15.     Next
  16.     [a2].Resize(UBound(arB), 2) = arB
  17. End Sub
複製代碼

TOP

回復 3# c_c_lai
回復 3# hcm19522

    好唷!!!
    正在努力學習一些好懂的><

    下變得版h大用巨集
    我看不太懂XD  這是公式的意思嗎
    沒試過
  1. K2:O8{=IFERROR(IF(COLUMN(A1)=1,"",",")&INDEX($A:$A,SMALL(IF(($B$3:$H$25<>0)*($B$1:$H$1=$J2),ROW(B$3:H$25)),COLUMN(A1)))&TEXT(N(INDIRECT(TEXT(SMALL(IF(($B$3:$H$25<>0)*($B$1:$H$1=$J2),ROW(B$3:H$25)*100+COLUMN($B3:$H25)),COLUMN(A1)),"!R0C00"),)),"!+0;!-0")&L2,"")
複製代碼

TOP

本帖最後由 starbox520 於 2016-12-12 12:14 編輯

回復 3# c_c_lai


    C大第二種是可以選擇範圍的意思吼
    會變成這樣?
   '  UBound(Ln, 1) = 177 : Long   /   UBound(Ln, 2) : 31 : Long
      31是我只要判斷到 "AE"欄而已
     工作表 "TEST是寫入"的地方,這邊我要多判斷 A欄的  M#SCC   跟 S#SCC  不要做處理(顯示)
     我試過在IF加入 If arA(x, y) <> 0 And arA <> "M#SCC" And arA <> "S#SCC" Then
     會出現型態不符
     排版也變了,詳請附檔
     該怎麼修改呢

    scanttt.rar (20.36 KB)

TOP

回復 9# c_c_lai


    C大我以我會的寫法練習一次
    這方法好像不會超過
    但問題點是把AE欄以後的也判斷進去了
    怕未來資料量越來越多的話,會卡在這個問題XD
    所以先研究起來放哈哈
  1. Private Sub Workbook_Open()
  2.     Dim vData As Variant, nRow As Integer, nCol As Integer
  3.     Dim vFill As Variant
  4.    
  5.     vData = Sheets("Data").UsedRange
  6.     ReDim vFill(2 To UBound(vData, 2), 1 To 8)
  7.     For nCol = 2 To UBound(vData, 2)
  8.         vFill(nCol, 2) = vData(1, nCol)
  9.         For nRow = 3 To UBound(vData)
  10.             If vData(nRow, nCol) <> 0 And vData(nRow, 1) <> "M#SCC" And vData(nRow, 1) <> "S#SCC" Then
  11.                 If vFill(nCol, 8) <> "" Then vFill(nCol, 8) = vFill(nCol, 8) & ","
  12.                 vFill(nCol, 8) = vFill(nCol, 8) & vData(nRow, 1) & IIf(vData(nRow, nCol) > 0, "+", "") & vData(nRow, nCol)
  13.             End If
  14.         Next
  15.     Next
  16.     With Sheets("TEST")
  17.         .[A1].CurrentRegion.Offset(1).ClearContents
  18.         .[A2].Resize(UBound(vFill) - 1, 8) = vFill
  19.     End With
  20. End Sub
複製代碼

TOP

回復 13# c_c_lai


    原來如此

   謝謝C大解說!!

TOP

回復 13# c_c_lai

   
     
    如果像這樣只要取S#XX 或M#XX  前面CF00不要取到,然後第174.175.254.255 不要讀到這4列的資訊(反黃部分)
    另外C大之前的寫法連同把B欄的資訊寫到G欄,這部分去除掉
     只要H欄的呈現資訊, 這樣要怎麼修改呢~

      SQ0001.rar (24.38 KB)

TOP

回復 16# c_c_lai


    對就是忽略~

TOP

回復 18# c_c_lai


    Sorry現在才看到Q0Q
    可是我看開起的附檔
     只有這兩個有反黃QQ
      102.png
     CF00M#SC    CF00M#TER    CF00S#S   CF00S#TE   
     這4列略過
     為什麼要去醫院阿
     看眼睛嗎 Q0Q
     保重身體耶~C大大!!!

TOP

回復 21# c_c_lai


    我只是把A欄數據改另一個名稱(改成CF62300)
    數據量一樣
    就會出現引數不對的狀況耶~
   
   
    ewewewe.png

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題