Hướng dẫn tách số và chuyển thành hàng dọc

Liên hệ QC

thandh1709

Thành viên mới
Tham gia
23/2/09
Bài viết
9
Được thích
0
Mình có chuỗi ký tự nằm trong 1 ô excel như sau:
'44011000', '44012100', '44012200', '44013000', '44020000', '44031020', '44031030', '44031040', '44031090', '44032011', '44032012', '44032013', '44032014', '44032015', '44032021', '44032022', '44032023', '44032024', '44032025', '44032029', '44032031', '44032032', '44032033', '44031010', '44032034', '44032035', '44032091', '44032092', '44032093', '44032095', '44032039', '44032099', '44034111', '44034112', '44034113', '44034114', '44034115', '44034119', '44034121', '44034122', '44034123', '44034124', '44034125', '44034129', '44034131', '44034132', '44034133', '44034134', '44034135', '44034139', '44034911', '44034912', '44034913', '44034914', '44034915', '44032094', '44034919', '44034921', '44034922', '44034923'Mình muốn tách các mã số và chuyển thành hàng dọc, mỗi hàng là 1 mã số:
VD: 44011000
44012100
44012200
Ai giúp mình với, càng đơn giản càng tốt nhé, vì mình không biết nhiều về excel. Many Cảm ơn.....
P/s: Mình copy một ít thôi, thực tế có khoảng hơn 1000 mã số.
 
Mình có chuỗi ký tự nằm trong 1 ô excel như sau:
'44011000', '44012100', '44012200', '44013000', '44020000', '44031020', '44031030', '44031040', '44031090', '44032011', '44032012', '44032013', '44032014', '44032015', '44032021', '44032022', '44032023', '44032024', '44032025', '44032029', '44032031', '44032032', '44032033', '44031010', '44032034', '44032035', '44032091', '44032092', '44032093', '44032095', '44032039', '44032099', '44034111', '44034112', '44034113', '44034114', '44034115', '44034119', '44034121', '44034122', '44034123', '44034124', '44034125', '44034129', '44034131', '44034132', '44034133', '44034134', '44034135', '44034139', '44034911', '44034912', '44034913', '44034914', '44034915', '44032094', '44034919', '44034921', '44034922', '44034923'Mình muốn tách các mã số và chuyển thành hàng dọc, mỗi hàng là 1 mã số:
VD: 44011000
44012100
44012200
Ai giúp mình với, càng đơn giản càng tốt nhé, vì mình không biết nhiều về excel. Many Cảm ơn.....
P/s: Mình copy một ít thôi, thực tế có khoảng hơn 1000 mã số.

Dùng Data\Text to columns.
Ví dụ chuổi trên ở cell A1, bạn chọn nó rồi vào Data\Text to columns..., tùy chọn trong đó rồi tách ra mỗi mã thành 1 cột, xong rồi dùng hàm chuyển nó về dạng dòng.

Ví dụ
{=SUBSTITUTE(SUBSTITUTE(TRANSPOSE($A$1:$BH$1),"'",""),",","")}
 

File đính kèm

  • So.rar
    210.4 KB · Đọc: 32
Lần chỉnh sửa cuối:
Dùng Data\Text to columns.
Ví dụ chuổi trên ở cell A1, bạn chọn nó rồi vào Data\Text to columns..., tùy chọn trong đó rồi tách ra mỗi mã thành 1 cột, xong rồi dùng hàm chuyển nó về dạng dòng.

Ví dụ
{=SUBSTITUTE(SUBSTITUTE(TRANSPOSE($A$1:$BH$1),"'",""),",","")}

Cách này mình thử rồi, nếu ít mã thì ok, nhưng cái file của mình nó hơn 1000 mã nên khi chuyển thành cột nó sẽ bị thiếu mã (chỉ được 250 cột thôi thì phải)
 
Mình có chuỗi ký tự nằm trong 1 ô excel như sau:
'44011000', '44012100', '44012200', '44013000', '44020000', '44031020', '44031030', '44031040', '44031090', '44032011', '44032012', '44032013', '44032014', '44032015', '44032021', '44032022', '44032023', '44032024', '44032025', '44032029', '44032031', '44032032', '44032033', '44031010', '44032034', '44032035', '44032091', '44032092', '44032093', '44032095', '44032039', '44032099', '44034111', '44034112', '44034113', '44034114', '44034115', '44034119', '44034121', '44034122', '44034123', '44034124', '44034125', '44034129', '44034131', '44034132', '44034133', '44034134', '44034135', '44034139', '44034911', '44034912', '44034913', '44034914', '44034915', '44032094', '44034919', '44034921', '44034922', '44034923'Mình muốn tách các mã số và chuyển thành hàng dọc, mỗi hàng là 1 mã số:
VD: 44011000
44012100
44012200
Ai giúp mình với, càng đơn giản càng tốt nhé, vì mình không biết nhiều về excel. Many Cảm ơn.....
P/s: Mình copy một ít thôi, thực tế có khoảng hơn 1000 mã số.
Sau đó dùng substitute để tách dấu '
Cái ni mà dùng code thì nhanh lắm, dùng thử ct sau thử
B1 là test
Tại A1 nhập
=MID(TRIM($B$1),(ROW()-1)*12+1,10)
Chưa biết nhiều dòng thì có OK.
 
Cách này mình thử rồi, nếu ít mã thì ok, nhưng cái file của mình nó hơn 1000 mã nên khi chuyển thành cột nó sẽ bị thiếu mã (chỉ được 250 cột thôi thì phải)

Xem file đính kèm, dùng thoải mái đến 10,000 mã cũng được (chỉ tội xử lý hơi lâu...)
PHP:
=MID(SUBSTITUTE(SUBSTITUTE($A$1,"'",""),", ",""),FIND(A3,SUBSTITUTE(SUBSTITUTE($A$1,"'",""),", ",""))+8,8)



Làm xong mới thấy cách của Bác ThuNghi rất hay, xin được phép thêm chút này, dùng tại dòng thứ nhất
PHP:
=SUBSTITUTE(MID(TRIM($A$1),(ROW()-1)*12+1,10),"'","")
 

File đính kèm

  • chuyen o_GPE.xls
    44.5 KB · Đọc: 14
Lần chỉnh sửa cuối:
Dùng thử code sau nhé.
Ví dụ chuổi nằm ở cell A1

Mã:
Sub chuyen()
Dim So, S1, S2, Ch, Ce
Ch = [a1] & ","
S1 = 1
Do While S1 < Len(Ch)
  S2 = InStr(S1, Ch, ",")
  So = Mid(Ch, S1, S2 - S1)
  S1 = S2 + 1
  Ce = Range("b65000").End(xlUp).Row + 1
  Range("b" & Ce) = Replace(So, "'", "")
Loop

End Sub
 

File đính kèm

  • Chuyen.xls
    37 KB · Đọc: 13
Lần chỉnh sửa cuối:
Mình có chuỗi ký tự nằm trong 1 ô excel như sau:
'44011000', '44012100', '44012200', '44013000', '44020000', '44031020', '44031030', '44031040', '44031090', '44032011', '44032012', '44032013', '44032014', '44032015', '44032021', '44032022', '44032023', '44032024', '44032025', '44032029', '44032031', '44032032', '44032033', '44031010', '44032034', '44032035', '44032091', '44032092', '44032093', '44032095', '44032039', '44032099', '44034111', '44034112', '44034113', '44034114', '44034115', '44034119', '44034121', '44034122', '44034123', '44034124', '44034125', '44034129', '44034131', '44034132', '44034133', '44034134', '44034135', '44034139', '44034911', '44034912', '44034913', '44034914', '44034915', '44032094', '44034919', '44034921', '44034922', '44034923'Mình muốn tách các mã số và chuyển thành hàng dọc, mỗi hàng là 1 mã số:
VD: 44011000
44012100
44012200
Ai giúp mình với, càng đơn giản càng tốt nhé, vì mình không biết nhiều về excel. Many Cảm ơn.....
P/s: Mình copy một ít thôi, thực tế có khoảng hơn 1000 mã số.
Nhìn dữ liệu cảm thấy nó được nhập rất "qui củ", cứ theo qui củ ấy mà thử dùng công thức này xem.
Ví dụ dữ liệu ở ô A1, nhập công thức sau bắt đầu từ ô nào cũng được rồi kéo xuống:
=--MID($A$1;ROWS($1:1)*12-11;8)
Bẫy lỗi nếu kéo quá lố:
=IF((ROWS($1:1)*12-11)>LEN($A$1);"";--MID($A$1;ROWS($1:1)*12-11;8))
 
Một cách khác hoàn toàn đơn giản: 1000 mã hay 10.000 mã giống nhau, khỏi hàm, khỏi công thức, khỏi bẫy lỗi, khỏi VBA;
1. Copy chuỗi, paste vào word
2. Nhấn Ctrl + H:
Find What: "', " (1 dấu nháy đơn, 1 dấu phẩy, 1 khoảng trắng)
Replace with: để trống
Nhấn Replace All
3. Replace lần 2:
Find What: 1 dấu nháy đơn
Replace with: ^p
4. Ctrl + A, Copy, paste ngược vào Excel.
 
Lần chỉnh sửa cuối:
Mình đoán là nếu chuỗi ký tự đó nằm trong 1 cell thì chắc không đến nỗi dài ngoằn, nên có thể làm như sau:

Vào Data/Text to columns

P1-2.jpg



P2-2.jpg



P3-2.jpg



P4-2.jpg



P5-1.jpg
 
Lần chỉnh sửa cuối:
Mình đoán là nếu chuỗi ký tự đó nằm trong 1 cell thì chắc không đến nỗi dài ngoằn, nên có thể làm như sau:
Nhưng nếu đúng là dài ngoằn thì sao nhỉ
Mình có chuỗi ký tự nằm trong 1 ô excel như sau:
P/s: Mình copy một ít thôi, thực tế có khoảng hơn 1000 mã số.
Hơn 1000 mã thì Excel 2003 làm sao đủ cột để Text to columns
 
Nhưng nếu đúng là dài ngoằn thì sao nhỉ
Hơn 1000 mã thì Excel 2003 làm sao đủ cột để Text to columns
Anh ptm0412 đã có hướng dẫn đối với chuỗi quá dài như bài bên dưới rồi bác Ba Tê ơi. Em chỉ thêm 1 cách thuần excel trong trường hợp chuỗi không "dài ngoằn" mà thôi.
 
Mình muốn tách các mã số và chuyển thành hàng dọc, mỗi hàng là 1 mã số:
VD: 44011000
44012100
44012200
Ai giúp mình với, càng đơn giản càng tốt nhé, vì mình không biết nhiều về excel. Many Cảm ơn.....
P/s: Mình copy một ít thôi, thực tế có khoảng hơn 1000 mã số.
Bạn thử code này xem có được không ?

PHP:
Sub Tach_Chuoi()
    Tmp = Split([f1], ",")
    For i = 1 To UBound(Tmp)
        [b65536].End(3)(2) = Tmp(i)
    Next
End Sub
 

File đính kèm

  • Tach_Chuoi.rar
    14.4 KB · Đọc: 19
TrungChinh đã viết:
Bạn thử code này xem có được không ?
Nếu thay:
PHP:
Tmp = Split([f1], ",")
---- (dấu phẩy không có kèm khoảng trắng)
bằng
PHP:
Tmp = Split(Repalce([f1], "'", ""), ", ")
---- (dấu phẩy có kèm khoảng trắng)

Hoặc thay câu
PHP:
[b65536].End(3)(2) = Tmp(i)
bằng
PHP:
[b65536].End(3)(2) = Trim(Replace(Tmp(i), "'", ""))

Thì kết quả không có dấu nháy và không có khoảng trắng đầu.

À quên, For i của Split(), thì phải là For i = 0 to uBound(), For i = 1 thì mất item đầu tiên.
 
Lần chỉnh sửa cuối:
Cảm ơn ptm0412 ! hôm qua tôi không kiểm tra kỹ nên không phát hiện code bị sai khi đặt i = 1. Còn việc bỏ dấu nháy và khoảng trống thì do người hỏi yêu cầu nên tôi không nghĩ tới (hấp tấp là một cố tật, sửa mãi vẫn không được).

Thành thật xin lỗi các bạn và sửa lại code như sau.
PHP:
Sub Tach_Chuoi()
    Tmp = Split([f1], ",")
    For i = 0 To UBound(Tmp)
        [b65536].End(3)(2) = Trim(Replace(Tmp(i), "'", ""))
    Next
End Sub
 
Lần chỉnh sửa cuối:
OKie mình đã làm được, cảm ơn bà con rất rất nhiều....
 
Cảm ơn ptm0412 ! hôm qua tôi không kiểm tra kỹ nên không phát hiện code bị sai khi đặt i = 1. Còn việc bỏ dấu nháy và khoảng trống thì do người hỏi yêu cầu nên tôi không nghĩ tới (hấp tấp là một cố tật, sửa mãi vẫn không được).

Thành thật xin lỗi các bạn và sửa lại code như sau.
PHP:
Sub Tach_Chuoi()
    Tmp = Split([f1], ",")
    For i = 0 To UBound(Tmp)
        [b65536].End(3)(2) = Trim(Replace(Tmp(i), "'", ""))
    Next
End Sub
Anh ơi... đưa mảng 1 chiều vào 1 range thì đâu cần For chứ
PHP:
Sub Tach_Chuoi()
  Tmp = Split(Replace([F1], "'", ""), ",")
  Range("B2").Resize(UBound(Tmp) + 1) = WorksheetFunction.Transpose(Tmp)
End Sub
Bài này thậm chí dùng công thức cũng được luôn
 
Web KT
Back
Top Bottom