Tách dãy số trong 1 hàng. (1 người xem)

Liên hệ QC

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

Far Way

Thành viên mới
Tham gia
18/9/19
Bài viết
11
Được thích
2
Chả là em có 1 dãy bao gồm chữ và dãy số, copy và paste thủ công thì gãy tay mất vì em có hàng trăm dãy như thế, em cũng đã test với các hàm móc ký tự (Left, Right, ..) nhưng xin thua. Với dãy chữ và số này, thì chữ và sau dấu "=" là cố định không thay đổi, nhưng dãy số thì thay đổi có lúc 5 hoặc 6 hoặc 7 số, em xin thua.

* Cố định: "Area = "; "Perimeter = "
* Không cố định (dãy số): 20524.0716 ; 842.7228
* Kết quả:
1. Area = 20524.0716, Perimeter = 842.7228 => 20524.0716 ; 842.7228
2. Area = 2491.8463, Perimeter = 410.7429 => 2491.8463 ; 410.7429

Em đính kèm file anh chị có thể xem rõ hơn. Cảm ơn anh chị đã đọc qua bài, mong anh chị giúp đỡ em phần này.
 

File đính kèm

Chả là em có 1 dãy bao gồm chữ và dãy số, copy và paste thủ công thì gãy tay mất vì em có hàng trăm dãy như thế, em cũng đã test với các hàm móc ký tự (Left, Right, ..) nhưng xin thua. Với dãy chữ và số này, thì chữ và sau dấu "=" là cố định không thay đổi, nhưng dãy số thì thay đổi có lúc 5 hoặc 6 hoặc 7 số, em xin thua.

* Cố định: "Area = "; "Perimeter = "
* Không cố định (dãy số): 20524.0716 ; 842.7228
* Kết quả:
1. Area = 20524.0716, Perimeter = 842.7228 => 20524.0716 ; 842.7228
2. Area = 2491.8463, Perimeter = 410.7429 => 2491.8463 ; 410.7429

Em đính kèm file anh chị có thể xem rõ hơn. Cảm ơn anh chị đã đọc qua bài, mong anh chị giúp đỡ em phần này.
Dùng công cụ TextToColumns tách ra thành nhiều cột dựa vào dấu phẩy (,)
Dùng công cụ Find and Replace thay thế "*= " (Dấu sao, dấu bằng, khoảng trắng) bằng "" (Để trống)
 
Chả là em có 1 dãy bao gồm chữ và dãy số, copy và paste thủ công thì gãy tay mất vì em có hàng trăm dãy như thế, em cũng đã test với các hàm móc ký tự (Left, Right, ..) nhưng xin thua. Với dãy chữ và số này, thì chữ và sau dấu "=" là cố định không thay đổi, nhưng dãy số thì thay đổi có lúc 5 hoặc 6 hoặc 7 số, em xin thua.

* Cố định: "Area = "; "Perimeter = "
* Không cố định (dãy số): 20524.0716 ; 842.7228
* Kết quả:
1. Area = 20524.0716, Perimeter = 842.7228 => 20524.0716 ; 842.7228
2. Area = 2491.8463, Perimeter = 410.7429 => 2491.8463 ; 410.7429

Em đính kèm file anh chị có thể xem rõ hơn. Cảm ơn anh chị đã đọc qua bài, mong anh chị giúp đỡ em phần này.
Thử.
Mã:
Function tachso(ByVal chuoi As String, ByVal ten As String, Optional ByVal phancach As String = ",") As Double
         Dim T, so As Double, T1
         For Each T In Split(chuoi, phancach)
             T1 = Split(T, " = ")
             If UCase(ten) = UCase(Application.Trim(T1(0))) Then
                tachso = T1(1)
                Exit Function
             End If
         Next
         tachso = 0
End Function
Mã:
=tachso(D7,M$12)
 

File đính kèm

Dùng hàm thì xem bài "Những phương pháp tách họ và tên...". Lấy cụm ký tự thứ 3 và 6.

Dùng VBA thì dùng regex. Pattern [0-9\.]?. Lấy Matches(0) và Matches(1)
 
Chả là em có 1 dãy bao gồm chữ và dãy số, copy và paste thủ công thì gãy tay mất vì em có hàng trăm dãy như thế, em cũng đã test với các hàm móc ký tự (Left, Right, ..) nhưng xin thua. Với dãy chữ và số này, thì chữ và sau dấu "=" là cố định không thay đổi, nhưng dãy số thì thay đổi có lúc 5 hoặc 6 hoặc 7 số, em xin thua.

* Cố định: "Area = "; "Perimeter = "
* Không cố định (dãy số): 20524.0716 ; 842.7228
* Kết quả:
1. Area = 20524.0716, Perimeter = 842.7228 => 20524.0716 ; 842.7228
2. Area = 2491.8463, Perimeter = 410.7429 => 2491.8463 ; 410.7429

Em đính kèm file anh chị có thể xem rõ hơn. Cảm ơn anh chị đã đọc qua bài, mong anh chị giúp đỡ em phần này.
Thử công thức dưới đây
Mã:
M13=MID(D7,8,FIND($N$12,D7)-2-8)*1
N13=MID(D7,FIND($N$12,D7)+LEN($N$12)+3,50)*1
 
Chả là em có 1 dãy bao gồm chữ và dãy số, copy và paste thủ công thì gãy tay mất vì em có hàng trăm dãy như thế, em cũng đã test với các hàm móc ký tự (Left, Right, ..) nhưng xin thua. Với dãy chữ và số này, thì chữ và sau dấu "=" là cố định không thay đổi, nhưng dãy số thì thay đổi có lúc 5 hoặc 6 hoặc 7 số, em xin thua.

* Cố định: "Area = "; "Perimeter = "
* Không cố định (dãy số): 20524.0716 ; 842.7228
* Kết quả:
1. Area = 20524.0716, Perimeter = 842.7228 => 20524.0716 ; 842.7228
2. Area = 2491.8463, Perimeter = 410.7429 => 2491.8463 ; 410.7429

Em đính kèm file anh chị có thể xem rõ hơn. Cảm ơn anh chị đã đọc qua bài, mong anh chị giúp đỡ em phần này.
Dùng 1 công thức, thử:
Mã:
M13=1/LOOKUP(2,1/MID($D7,FIND(M$12,$D7)+LEN(M$12)+2,ROW($1:$15)))
Enter, copy qua phải, rồi fill xuống.

Thân
 

File đính kèm

Thử.
Mã:
Function tachso(ByVal chuoi As String, ByVal ten As String, Optional ByVal phancach As String = ",") As Double
         Dim T, so As Double, T1
         For Each T In Split(chuoi, phancach)
             T1 = Split(T, " = ")
             If UCase(ten) = UCase(Application.Trim(T1(0))) Then
                tachso = T1(1)
                Exit Function
             End If
         Next
         tachso = 0
End Function
Mã:
=tachso(D7,M$12)


Em cảm ơn anh , code này em đã test 2 ngày, rất chuẩn chính xác, rất cảm ơn anh.

* Em cũng cảm ơn mọi người đã hỗ trợ, thật cảm thấy may mắn, xin chúc gia đình cuối tuần hạnh phúc.
 
Web KT

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

Back
Top Bottom