Board logo

標題: [發問] 資料剖析小小發問 [打印本頁]

作者: jj369963    時間: 2014-9-4 17:06     標題: 資料剖析小小發問

Dear大大:

  問題,如何參考工作表1,完成工作表2 的table。

   目前想到用資料剖析,但不知如何弄?

    可以的話也想知道公式的方法?


    小小發問是進步的原動力
   感謝大家

[attach]19096[/attach]
作者: luhpro    時間: 2014-9-6 04:58

Dear大大:

  問題,如何參考工作表1,完成工作表2 的table。

   目前想到用資料剖析,但不知如何弄?
...
jj369963 發表於 2014-9-4 17:06
  1. Sub nn()
  2.   Dim iCol%, iNum%, iSB%, iSE%, iTB%, iTE%
  3.   Dim lSRow&, lTRow&
  4.   Dim sStr1$, sStr2$, sStr$
  5.   Dim vD
  6.   Dim wsSou As Worksheet, wsTar As Worksheet
  7.   
  8.   Set vD = CreateObject("Scripting.Dictionary")
  9.   Set wsSou = Sheets("工作表1")
  10.   Set wsTar = Sheets("工作表2")
  11.   lSRow = 1
  12.   lTRow = 2
  13.   iCol = 2
  14.   With wsTar
  15.     While .Cells(1, iCol) <> ""
  16.       vD(CStr(.Cells(1, iCol))) = iCol
  17.       iCol = iCol + 1
  18.     Wend
  19.     With wsSou
  20.       While .Cells(lSRow, 1) <> ""
  21.         wsTar.Cells(lTRow, 1) = .Cells(lSRow, 1)
  22.         sStr1 = .Cells(lSRow, 2)
  23.         sStr2 = .Cells(lSRow, 3)
  24.       
  25.         iSB = InStr(1, sStr1, "#") + 1
  26.         iTB = InStr(1, sStr2, "#") + 1
  27.         While iSB < Len(sStr1)
  28.           iSE = InStr(iSB, sStr1, "#")
  29.           If iSE = 0 Then iSE = Len(sStr1) + 1
  30.           iTE = InStr(iTB, sStr2, "#")
  31.           If iTE = 0 Then iTE = Len(sStr2) + 1
  32.           wsTar.Cells(lTRow, vD(CStr(Application.Proper(Mid(sStr1, iSB, iSE - iSB))))) = Mid(sStr2, iTB, iTE - iTB)
  33.           iSB = iSE + 1
  34.           iTB = iTE + 1
  35.         Wend
  36.         lSRow = lSRow + 1
  37.         lTRow = lTRow + 1
  38.       Wend
  39.     End With
  40.   End With
  41. End Sub
複製代碼

作者: ML089    時間: 2014-9-6 17:04

回復 1# jj369963
A2 =工作表1!A1
下拉複製公式

B2 =MID(SUBSTITUTE(工作表1!$C1,"#",REPT(" ",66)),COLUMN(A1)*66-1,66)*1
右拉下拉複製公式
作者: jj369963    時間: 2014-9-6 23:17

回復 3# ML089

Dear ML089 大大:
感謝您的回應,有幾個問題想請教。
1.B2 =MID(SUBSTITUTE(工作表1!$C1,"#",REPT(" ",66)),COLUMN(A1)*66-1,66)*1
裡的66是怎麼推出來的??
2.我應用在別的檔案裡,出現R2儲存格應該是1.81,卻被分成R2=1.8 和S2=1,如附檔

在煩請回應,謝謝

[attach]19106[/attach]
作者: ML089    時間: 2014-9-7 00:28

回復 4# jj369963

1.B2 =MID(SUBSTITUTE(工作表1!$C1,"#",REPT(" ",66)),COLUMN(A1)*66-1,66)*1
裡的66是怎麼推出來的??
   
一般插入空白字元長度不小於字串長度,目前約有130字元,建議使用 166試試


字串長度限制 32,767 個字元
作者: jj369963    時間: 2014-9-8 21:28

回復 5# ML089


    Dear ML089大大:

     測試OK,小小疑問"目前約有130字元",好奇怎麼估測的呢?

     感謝
作者: ML089    時間: 2014-9-8 22:50

回復 6# jj369963

使用 LEN 函數就可以知道
作者: jj369963    時間: 2014-9-20 23:36

回復 2# luhpro


    Dear大大:

   如附擋,該如何寫VBA呢?

再煩請指教,感謝

[attach]19193[/attach]
作者: luhpro    時間: 2014-9-21 19:22

回復  luhpro
    Dear大大:
   如附擋,該如何寫VBA呢?
再煩請指教,感謝
jj369963 發表於 2014-9-20 23:36
  1. Sub nn()
  2.   Dim lRow&
  3.   Dim wsTar As Worksheet
  4.   
  5.   Set wsTar = Sheets("Sheet2")
  6.   wsTar.Cells.Clear
  7.   With Sheets("Sheet1")
  8.     .[B1].Copy wsTar.[B1]
  9.     With wsTar.[B1]
  10.       .TextToColumns Other:=True, OtherChar:="#"
  11.       .Delete xlShiftToLeft
  12.     End With
  13.     lRow = 2
  14.     Do While .Cells(lRow - 1, 3) <> ""
  15.       .Cells(lRow - 1, 1).Copy wsTar.Cells(lRow, 1)
  16.       .Cells(lRow - 1, 3).Copy wsTar.Cells(lRow, 2)
  17.       With wsTar.Cells(lRow, 2)
  18.         .TextToColumns Other:=True, OtherChar:="#"
  19.         .Delete xlShiftToLeft
  20.       End With
  21.       lRow = lRow + 1
  22.     Loop
  23.   End With
  24. End Sub
複製代碼
[attach]19197[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)