PCZONE 討論區    
PCZONE 版規 帳號無法發言?
首頁 註冊 個人設定 悄悄話 搜尋文章 最新文章 今日所有文章 會員登出

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- OFFICE 相 關 軟 體 討 論 版

-- OFFICE 相 關 軟 體 討 論 版 Word、Excel、PowerPoint、Access、Outlook、FrontPage或Office XP等的問題解答與經驗分享

回覆
 
主題工具 搜尋本主題
舊 2005-03-16, 07:35 PM   #1
會員
 
註冊日期: 2005-03-16
文章: 9
lys338 正向著好的方向發展
【求助】(excel)請教在同一欄內數值如何分解對應...檔案已經上傳

試問以下問題(*表示區隔,沒有意義,不然兩欄的數字會連在一起)
*********欄A ********************欄B
列1***** A123456789************C123,C456,C789,C741,
列2*****Q879654321************B123,B963,B999,B963,
列3****************************B785,B852,B147,
列4*****P987654321************R12,R33,R77,R45,R96,
列5***************************R68,R44,R66,R87,
列6***** P852741963************C987,C456,C841,C123,

如何轉成

欄E ************欄F
C123***********A123456789
C456***********A123456789
C789***********A123456789
C741***********A123456789
B123***********Q879654321
B963***********Q879654321
B999***********Q879654321
B963***********Q879654321
B785***********Q879654321
B852***********Q879654321
B147***********Q879654321
R12************P987654321
R33************P987654321
R77************P987654321
R45************P987654321
R96************P987654321
R68************P987654321
R44************P987654321
R66************P987654321
R87************P987654321
C987***********P852741963
C456***********P852741963
C841***********P852741963
C123***********P852741963

進而可以將相同之開頭(以下循E欄為例)歸納排列

欄G****************欄H
C123***********A123456789
C123***********P852741963
C456***********A123456789
C456***********P852741963
C741***********A123456789
C789***********A123456789
C841***********P852741963
C987***********P852741963

B123***********Q879654321
B147***********Q879654321
B785***********Q879654321
B852***********Q879654321
B963***********Q879654321
B999***********Q879654321

R12************P987654321
R33************P987654321
R44************P987654321
R45************P987654321
R66************P987654321
R68************P987654321
R77************P987654321
R87************P987654321
R96************P987654321
上傳的附加檔案
檔案類型: rar Book3.rar (7.4 KB, 22 次觀看)


lys338 目前未上線   回覆時引用此篇文章
舊 2005-03-16, 10:52 PM   #2
會員
 
註冊日期: 2001-10-16
文章: 1,894
ICLA

VBA 應該一下下就好了,如果您去做一件善事,我就幫您寫一段。
__________________
咦~
ICLA 目前未上線   回覆時引用此篇文章
舊 2005-03-17, 02:42 AM   #3
Take it easy~
 
leonchou 的大頭照
 
註冊日期: 2001-05-03
文章: 3,288
leonchou

唔... 再貼一次好了, 希望大家一起討論更好的寫法
語法:
Sub gg()
Dim ary() As String
r = 1: re = 1: b = Cells(r, 2)
[E1].CurrentRegion.ClearContents
While b <> ""
 If Cells(r, 1) <> "" Then a = Cells(r, 1)
 ary = Split(b, ",")
 For Each s In ary
  If s <> "" Then _
   Cells(re, 5) = s: Cells(re, 6) = a: re = re + 1
 Next
 r = r + 1
 b = Cells(r, 2)
Wend
[E1].CurrentRegion.Copy [G1]
[G:H].Sort [G1], Header:=xlNo
Set g = Cells(2, 7)
While g <> ""
 If Left(g, 1) <> Left(g.Offset(-1, 0), 1) Then
  g.Resize(, 2).Insert xlShiftDown
  Set g = g.Offset(2, 0)
 Else: Set g = g.Offset(1, 0)
 End If
Wend
End Sub
:Excel97(含)以下版本不支援 Split 函數。
leonchou 目前未上線   回覆時引用此篇文章
舊 2005-03-17, 03:01 AM   #4
Take it easy~
 
leonchou 的大頭照
 
註冊日期: 2001-05-03
文章: 3,288
leonchou

順便示範如何貼表格 (本區有開放HTML代碼)

 欄A欄B
列1A123456789C123,C456,C789,C741,
列2Q879654321B123,B963,B999,B963,
列3 B785,B852,B147,
列4P987654321R12,R33,R77,R45,R96,
列5 R68,R44,R66,R87,
列6P852741963C987,C456,C841,C123,
leonchou 目前未上線   回覆時引用此篇文章
舊 2005-03-17, 10:17 AM   #5
會員
 
註冊日期: 2005-03-16
文章: 9
lys338 正向著好的方向發展

感謝版上各位先進的解答
使用上述巨集的確可以做出所需結果
.....假如資料中存在空白欄位,便停止程式執行因而中斷
該如何讓他繼續執行
欄A 欄B
列2 Q879654321 B123,B963,B999,B963,
列3
列4 P987654321 R12,R33,R77,R45,R96,
列5 R68,R44,R66,R87,

感謝指點

PS..檔案已經上傳
lys338 目前未上線   回覆時引用此篇文章
舊 2005-03-18, 02:06 PM   #6
會員
 
註冊日期: 2005-03-16
文章: 9
lys338 正向著好的方向發展

感謝版上各位先進的解答
使用上述巨集的確可以做出所需結果
.....假如資料中存在空白欄位,便停止程式執行因而中斷
該如何讓他繼續執行
欄A 欄B
列2 Q879654321 B123,B963,B999,B963,
列3
列4 P987654321 R12,R33,R77,R45,R96,
列5 R68,R44,R66,R87,

感謝指點

PS..檔案已經上傳
lys338 目前未上線   回覆時引用此篇文章
舊 2005-03-18, 09:55 PM   #7
Take it easy~
 
leonchou 的大頭照
 
註冊日期: 2001-05-03
文章: 3,288
leonchou

把這一段:
r = 1: re = 1: b = Cells(r, 2)
[E1].CurrentRegion.ClearContents
While b <> ""
 If Cells(r, 1) <> "" Then a = Cells(r, 1)
 ary = Split(b, ",")
 For Each s In ary
  If s <> "" Then _
   Cells(re, 5) = s: Cells(re, 6) = a: re = re + 1
 Next
 r = r + 1
 b = Cells(r, 2)
Wend

改為:
re = 1
[E1].CurrentRegion.ClearContents
For r = 1 To [A65536].End(xlUp).Row
 b = Cells(r, 2)
 If b <> "" Then
  ary = Split(b, ",")
  If Cells(r, 1) <> "" Then a = Cells(r, 1)
  For Each s In ary
   If s <> "" Then _
    Cells(re, 5) = s: Cells(re, 6) = a: re = re + 1
  Next
 End If
Next r
leonchou 目前未上線   回覆時引用此篇文章
舊 2005-03-20, 11:16 PM   #8
平風造雨
 
cinta3344 的大頭照
 
註冊日期: 2002-04-11
文章: 72
cinta3344

看LEON兄的貼每次都會有收穫
像[A65536].End(xlUp).Row這個用法
我就可以來檢驗公司的某些EXCEL檔虛胖的原因了
__________________
夢裡非夢斷腸魂 黃梁猶怯武林途
豪情一朝風雲起 英雄血灑江湖路
cinta3344 目前未上線   回覆時引用此篇文章
回覆



書籤

主題工具 搜尋本主題
搜尋本主題:

進階搜尋

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附加檔案
不可以編輯自己的文章

啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇啟用 HTML 語法



所有時間均為台北時間。現在的時間是 10:35 PM


 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : www@pczone.com.tw

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email : www@pczone.com.tw 處理。