返回列表 上一主題 發帖

如何將儲存格 由直轉橫

如何將儲存格 由直轉橫

如何將以下儲存格B欄資料轉寫在C欄並以 , 號分隔,這程式碼如何? 請各位高手指教,謝謝!!
A 欄             B欄           C欄
123456       34            34,36,38,40   
1245           36
675             38
457             40

1456            30          30,32
123              32

823              S             S,M,L
2628            M
939              L

  1. Sub yy()
  2. i = 1
  3. Do
  4. b = Range(Cells(i, 2), Cells(i, 2).End(4))
  5. Cells(i, 3) = Join(Application.Transpose(b), ",")
  6. i = i + UBound(b) + 1
  7. Loop Until Cells(i, 2) = ""
  8. End Sub
複製代碼

TOP

謝謝 oobird!!
問題解決了, 但不理解這句  b = Range(Cells(i, 2), Cells(i, 2).End(4))
可否再指教,謝謝!!

TOP

如i=1時b = Range(Cells(i, 2), Cells(i, 2).End(4))
相當於把滑鼠放在b1
按下ctrl+shift+向下鍵

TOP

本帖最後由 GBKEE 於 2011-4-23 17:42 編輯

回復 1# aoss98
Sub Ex()
    Dim C As Range
    For Each C In Range("B:B").SpecialCells(xlCellTypeConstants).Areas
        C.Cells(1, 2) = Join(Application.Transpose(C), ",")
    Next
End Sub

TOP

謝謝 GBKEE 指教, 當程式執行這句便中止 For Each C In Range("c:c").SpecialCells(xlCellTypeConstants).Areas
另外 如果只有一列資料,執行 oobird 程式碼便出現以下結果
A 欄             B欄           C欄
123456       34            34,36

1245           36

1456            30          30,32
123              32
應該結果是
A 欄             B欄           C欄
123456       34            34

1245           36            36

1456            30          30,32
123              32
請各位再指教,謝謝!!

TOP

小弟借oobird版大的程式碼稍作修改
Sub yy()
i = 1
Do
aa = Cells(i, 2).CurrentRegion.Rows.Count
b = Cells(i, 2).Resize(aa, 1)
If aa = 1 Then
Cells(i, 3) = b
Else
Cells(i, 3) = Join(Application.Transpose(b), ",")
End If
i = i + aa + 1
Loop Until Cells(i, 2) = ""
End Sub

TOP

謝謝a8350070,修改後的程式冇問題,謝謝你指敎。

TOP

本帖最後由 Hsieh 於 2011-4-23 09:08 編輯

函數的參考
C1=LEFT(B1&","&B2&","&B3&","&B4&","&B5&","&B6&","&B7&","&B8&","&B9&","&B10,SUM(LEN($B$1:$B$10),COUNTA($B$1:$B$10),-1))

為陣列公式,輸入完請按        ctrl        +        shift        +        enter

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題