Board logo

標題: [發問] 關於儲存格 兩段的問題 [打印本頁]

作者: mark15jill    時間: 2012-3-14 09:32     標題: 關於儲存格 兩段的問題

本帖最後由 mark15jill 於 2012-3-14 09:33 編輯

想請問 如果儲存格 有兩段文字(如附圖) 要怎用VBA判別 上、下行文字??
(只會合再一起 不會分開= =")

如附圖
attachimg]9978[/attachimg]
作者: Hsieh    時間: 2012-3-14 09:42

回復 1# mark15jill


    換行字元為Chr(10)
作者: mark15jill    時間: 2012-3-14 09:45

回復 2# Hsieh


    Hsieh 大大 我的意思是說
    如附圖    右邊第一個是 姓名(如 海龍王)  第二個是區域(如海底城)  要怎把 原始的分解出..QQ
作者: Hsieh    時間: 2012-3-14 10:19

回復 3# mark15jill

ar=split(a,chr(10))
a.offset(,2).resize(,ubound(ar)+1)=ar
作者: mark15jill    時間: 2012-3-14 10:37

回復 4# Hsieh


    前段看得懂
後段 他顯示型態不符..
作者: hugh0620    時間: 2012-3-14 11:19

本帖最後由 hugh0620 於 2012-3-14 11:23 編輯

回復 5# mark15jill

   這個剛好我最近也有處理過~  我採用的是透過一般函數的處理方式~ 來撰寫程式碼
    C1 = Left(Sheet3.Cells(原始資料儲存格), Application.Find(Chr(13), Sheet3.Cells(原始資料儲存格), 1) - 1)                                                                          '(減不減1看你資料內容,自行增減)
    C2 = Mid(Sheet3.Cells(原始資料儲存格), Application.Find(Chr(10), Sheet3.Cells(原始資料儲存格), 1) + 1, Len(Sheet3.Cells(原始資料儲存格)))  '(加不加1看你資料內容,自行增加)
   'C1=名字
   'C2=區域
作者: mark15jill    時間: 2012-3-14 11:38

回復 6# hugh0620


   

[attach]9979[/attach]

[attach]9980[/attach]
作者: register313    時間: 2012-3-14 11:39

回復 5# mark15jill
Hsieh超版的程式沒有問題,只是取出的欄位順序與你要的相反
  1. Sub SS()
  2. For Each a In Range([a1], [A65536].End(xlUp))
  3.   ar = Split(a, Chr(10))
  4.   a.Offset(, 2).Resize(, UBound(ar) + 1) = ar
  5. Next
  6. End Sub
複製代碼
[attach]9981[/attach]
作者: mark15jill    時間: 2012-3-14 11:45

回復 8# register313


試驗可以.. 感謝各位大大的協助..

顛倒是沒關係.. 後續再調整就好

之前是多筆資料要統合一起,現在是要分解出。
真是xxxxxxxxo   = ="
作者: hugh0620    時間: 2012-3-14 11:52

回復 7# mark15jill

這樣就可以了~
chr(13)->chr(10)
因為我的資料是從資料庫導出來的~ 所以會有一個chr(13)的字元~
所以~ 你要自行去了解~ 你資料的內容~ 再去調整成適當的程式碼~

Sub ex()
Cells(1, 3) = Left(Sheet1.Cells(1, 1), Application.Find(Chr(10), Sheet1.Cells(1, 1), 1) - 1)                                                 '(減不減1看你資料內容,自行增減)
Cells(1, 4) = Mid(Sheet1.Cells(1, 1), Application.Find(Chr(10), Sheet1.Cells(1, 1), 1) + 1, Len(Sheet1.Cells(1, 1))) '(加不加1看你資料內容,自行增加)

End Sub
作者: mark15jill    時間: 2012-3-14 11:57

回復 10# hugh0620


    謝謝HUGH0620 大大

有試驗了  可以~ 謝謝(目前正將程式碼轉換成 想要的功能擴充區塊)...
作者: Hsieh    時間: 2012-3-14 13:35

回復 3# mark15jill
如果是分隔符號確定是alt+enter
使用資料剖析/分隔符號/其他輸入alt+數字鍵10

[attach]9982[/attach]
作者: mark15jill    時間: 2012-3-14 13:41

了解~~
謝謝大大的教導..
因為有些資料 原始就已經合在一個儲存格
經轉換後 要分開
作者: c_c_lai    時間: 2012-3-25 18:01

請教一下假設字串中 Chr(10) 萬一不存在時,執行 Application.Find(Chr(10), Sheet1.Cells(1, 1), 1) 為何會出現 Error 呢?
作者: register313    時間: 2012-3-25 19:57

回復 14# c_c_lai
函數說明
[attach]10131[/attach]
作者: c_c_lai    時間: 2012-3-26 08:35

原來如此, 因為我是用 Application.Find("/", Sheet1.Cells(1, 1), 1) 的方式來處哩,
如果內容為 "海龍宮/海龍王"  就 OK, 但如果換成 "海龍宮 海龍王"  則為   #VALUE 了。
謝謝您的指導!
作者: Hsieh    時間: 2012-3-26 08:45

本帖最後由 Hsieh 於 2012-3-26 08:48 編輯

回復 16# c_c_lai

Application.Find這是VBA引用工作表函數
FIND函數的說明內清楚提到,當搜尋不到字元會傳回錯誤值
不要將VBA方法與工作表函數混淆
工作表函數FIND會傳回字元位於字串中的位置,會傳回一個數值
VBA的Find方法是找到符合條件的儲存格,會傳回儲存格物件




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