Lấy hàng thứ nhất/thứ hai trong một ô chứa nhiều dữ liệu phân cách bởi Alt + Enter (1 người xem)

Người dùng đang xem chủ đề này

EyreDung

Thành viên mới
Tham gia
16/8/10
Bài viết
14
Được thích
0
Nghề nghiệp
Kế toán PMU
Chào tất cả mọi người! Mình có vấn đề sau nhờ các tiền bối chỉ dạy!

MÌnh có một list danh sách, trong một ô của bảng Excel có nhiều dòng như sau:

Nguyễn Thị Eyre Dung Alt + Enter
Địa chỉ: Quận Bình Thạnh, Tp.HCM Alt + Enter
Điện thoại: 091617 252* Alt + Enter
Email: dungc6haiquan@gmail.com Alt + Enter

Có rất nhiều ô tổng hợp thông tin như vậy, nêu em muốn lấy dòng thứ nhất <Nguyễn Thị Eyre Dung> hoặc dòng thứ 2 <Địa chỉ: Quận Bình Thạnh, Tp.HCM> của cả danh sách thì làm thế nào ah?
 
Chào tất cả mọi người! Mình có vấn đề sau nhờ các tiền bối chỉ dạy!

MÌnh có một list danh sách, trong một ô của bảng Excel có nhiều dòng như sau:

Nguyễn Thị Eyre Dung Alt + Enter
Địa chỉ: Quận Bình Thạnh, Tp.HCM Alt + Enter
Điện thoại: 091617 252* Alt + Enter
Email: dungc6haiquan@gmail.com Alt + Enter

Có rất nhiều ô tổng hợp thông tin như vậy, nêu em muốn lấy dòng thứ nhất <Nguyễn Thị Eyre Dung> hoặc dòng thứ 2 <Địa chỉ: Quận Bình Thạnh, Tp.HCM> của cả danh sách thì làm thế nào ah?

Yêu cầu của bạn phải giải quyết bằng VBA, nhưng muốn có câu trả lời đúng với điều bạn cần thì phải đưa file lên và nêu rõ điều kiện là bạn muốn lấy cái nào, chứ nói như bạn ai biết cái nào là cái nào chứ

Bạn xài thử hàm tự tạo này xem thế nào

Cách dung: giả sử dữ liệu của bạn tại A1 thì tại B1 bạn nhập = tach(A1,1) để lấy dòng 1. Bạn thay số 1 thành số 2, hay 3... tùy ý



PHP:
Function tach(cell As Range, n As Byte) As String
Dim tam
  With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = ChrW(10)
    tam = Split(.Replace(cell, ";"), ";")
  End With
tach = tam(n - 1)
End Function
 
Lần chỉnh sửa cuối:
Đính kèm danh sách

Mình cần câp nhật những ô còn thiếu trong bảng Excel đính kèm bằng cách lấy thông tin từ cột tổng hợp là cộ B.
 

File đính kèm

Cảm ơn anh, mình được rồi, nhưng mình còn muốn hỏi chút xíu nữa, nếu làm ngược lại thì làm sao, em có các cột và muốn nối thành một ô tổng hợp, nếu em dùng hàm "&" thì các dòng không tự phân ra được, mình phải nhấn CTRL Enter để tách thành hàng trong cột!
 
Cảm ơn anh, mình được rồi, nhưng mình còn muốn hỏi chút xíu nữa, nếu làm ngược lại thì làm sao, em có các cột và muốn nối thành một ô tổng hợp, nếu em dùng hàm "&" thì các dòng không tự phân ra được, mình phải nhấn CTRL Enter để tách thành hàng trong cột!

Tách ra thì được thì ghép lại cũng được chứ

PHP:
Function nhap(vung As Range)
  With Application
     nhap = Join(.Transpose(.Transpose(vung)), ChrW(10))
  End With
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Yêu cầu của bạn phải giải quyết bằng VBA, nhưng muốn có câu trả lời đúng với điều bạn cần thì phải đưa file lên và nêu rõ điều kiện là bạn muốn lấy cái nào, chứ nói như bạn ai biết cái nào là cái nào chứ

Bạn xài thử hàm tự tạo này xem thế nào

Cách dung: giả sử dữ liệu của bạn tại A1 thì tại B1 bạn nhập = tach(A1,1) để lấy dòng 1. Bạn thay số 1 thành số 2, hay 3... tùy ý



PHP:
Function tach(cell As Range, n As Byte) As String
Dim tam
  With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = ChrW(10)
    tam = Split(.Replace(cell, ";"), ";")
  End With
tach = tam(n - 1)
End Function
Tự nhiên đi đổi Chr(10) thanh dấu chấm phẩy, sau đó lại Split với dấu chấm phẩy ---> Liệu có phải hơi THỪA không?
Vậy thôi ta Splict(cell, Chr(10)) đi cho rồi
 
Tự nhiên đi đổi Chr(10) thanh dấu chấm phẩy, sau đó lại Split với dấu chấm phẩy ---> Liệu có phải hơi THỪA không?
Vậy thôi ta Splict(cell, Chr(10)) đi cho rồi

Anh nói chính xác, lẽ ra chỉ có nhiêu đây là đủ rồi, vậy mà viết lòng vòng
PHP:
Function tach(cell As Range, n As Byte) As String
  Dim tam
    tam = Split(cell, ChrW(10))
  tach = tam(n - 1)
End Function
 
Cảm ơn rất nhiều, nhờ cái này mà mình đỡ mất công nữa ngày ngồi tách tay một List danh sách khách hàng!
 
Mình cần câp nhật những ô còn thiếu trong bảng Excel đính kèm bằng cách lấy thông tin từ cột tổng hợp là cộ B.

Nhập công thức này vào cell C2:
PHP:
=TRIM(MID(SUBSTITUTE(TRIM($B2),CHAR(10),REPT(" ",255)),1+(COLUMNS($A:A)-1)*255,255))
Kéo fill sang phải và xuống dưới
----------------
Còn bài toán ngược (ráp vào) cũng không khó. Cứ dùng toán tử "&" để nối bình thường, sau khi có kết quả, hãy format Wrap Text cho nó là được rồi
 

File đính kèm

Anh nói chính xác, lẽ ra chỉ có nhiêu đây là đủ rồi, vậy mà viết lòng vòng
PHP:
Function tach(cell As Range, n As Byte) As String
  Dim tam
    tam = Split(cell, ChrW(10))
  tach = tam(n - 1)
End Function
Hihi, thế mà mình tưởng chú em đang dợt thằng Reg nên mới chạy lòng vòng chứ
Vậy nếu bi giờ xử nó bằng công thức thì sao ???
Híc
 
Hihi, thế mà mình tưởng chú em đang dợt thằng Reg nên mới chạy lòng vòng chứ
Vậy nếu bi giờ xử nó bằng công thức thì sao ???
Híc

Xử bằng công thức cũng được nhưng lắng nhằng quá. Cột đầu tiên thì đơn giản, Left( tìm cái dấu xuống dòng,B2)-1 là có kết quả cột 1

Tiếp theo thì dùng hàm mid(B2,bắt đầu từ tổng ký tự của cột 1 +1, vị trí của dấu xuống dòng tiếp theo - số ký tự côt 1....

= LEFT(B2,FIND("
",B2)-1)
=MID(B2,LEN(C2)+1,FIND("
",B2,LEN(C2)+2)-LEN(C2))
 
Xử bằng công thức cũng được nhưng lắng nhằng quá. Cột đầu tiên thì đơn giản, Left( tìm cái dấu xuống dòng,B2)-1 là có kết quả cột 1

Tiếp theo thì dùng hàm mid(B2,bắt đầu từ tổng ký tự của cột 1 +1, vị trí của dấu xuống dòng tiếp theo - số ký tự côt 1....

= LEFT(B2,FIND("
",B2)-1)
=MID(B2,LEN(C2)+1,FIND("
",B2,LEN(C2)+2)-LEN(C2))
Dùng FIND có mà chết (phải bẫy lôi tùm lum)
Nên dùng SUBSTITUTE như bài 10 tôi đã làm ấy
 

Bài viết mới nhất

Back
Top Bottom