[Hỏi] Tách chuỗi ký tự và phân loại theo điều kiện

Liên hệ QC

ancrayzy

Thành viên chính thức
Tham gia
15/9/08
Bài viết
67
Được thích
4
Chào cộng đồng GPE,
Mình có vấn đề như sau nhờ mọi người giúp đỡ
Mình cần lập công thức cho các cột B2->B4, C2->C4, D2->D4
1. Tại cột B: lấy giá trị phía sau dấu "x" (chiều cao)
2. Tại cột C: lấy giá trị lớn nhất của 2 cạnh còn lại
3. Tại cột D: lấy giá trị nhỏ nhất của 2 cạnh còn lại
1640246528433.png
Cảm ơn mọi người nhiều ạ
 

File đính kèm

Chào cộng đồng GPE,
Mình có vấn đề như sau nhờ mọi người giúp đỡ
Mình cần lập công thức cho các cột B2->B4, C2->C4, D2->D4
1. Tại cột B: lấy giá trị phía sau dấu "x" (chiều cao)
2. Tại cột C: lấy giá trị lớn nhất của 2 cạnh còn lại
3. Tại cột D: lấy giá trị nhỏ nhất của 2 cạnh còn lại
View attachment 270636
Cảm ơn mọi người nhiều ạ
Công thức hơi dài một tí.
 

File đính kèm

1. Cột B lấy số phía sau dấu "x" mà lại có 2 dấu "x" vậy lấy sau dấu nào. Nếu dấu "x" cuối tại sao B3 không phải là 4000 mà là 400
2. Lấy giá trị lớn nhất vậy tại sao C2 khôn gphải là 2000 mà lại là 5000
3. Lấy nhỏ nhất tại sao D2 lại là 4400 mà không phải là 1500
 
1. Cột B lấy số phía sau dấu "x" mà lại có 2 dấu "x" vậy lấy sau dấu nào. Nếu dấu "x" cuối tại sao B3 không phải là 4000 mà là 400
2. Lấy giá trị lớn nhất vậy tại sao C2 khôn gphải là 2000 mà lại là 5000
3. Lấy nhỏ nhất tại sao D2 lại là 4400 mà không phải là 1500
Minh họa hơi ẩu bác hả?
:xmasbiggrin:
 
Minh họa hơi ẩu bác hả?
:xmasbiggrin:
Nếu vậy thì thử công thức dưới đây
Mã:
B2=--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($C1)-1)+1;50)
C2=MAX(--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($A1:$B1)-1)+1;50))
D2=MIN(--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($A1:$B1)-1)+1;50))
 
Nếu vậy thì thử công thức dưới đây
Mã:
B2=--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($C1)-1)+1;50)
C2=MAX(--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($A1:$B1)-1)+1;50))
D2=MIN(--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($A1:$B1)-1)+1;50))
Hay quá, Dùng Rept ngắn hơn nhiều!
Nhưng C2, D2 phải kết thúc bằng Ctrl+Shift+Enter mới cho kết quả đúng Bác hả?!
Thanks Bác!
 
Công thức hơi dài một tí.
Cảm ơn bạn rất nhiều, công thức này chạy rất đúng.
Bài đã được tự động gộp:

Nếu vậy thì thử công thức dưới đây
Mã:
B2=--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($C1)-1)+1;50)
C2=MAX(--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($A1:$B1)-1)+1;50))
D2=MIN(--MID(SUBSTITUTE($A2;"x";REPT(" ";50));50*(COLUMN($A1:$B1)-1)+1;50))
Xin lỗi mọi người vì do edit nhiều nên bị sai sót trong ví dụ minh hoạ nhé.
Công thức này khi mình copy vào file thì thấy kết quả không chính xác ở cột dài và ngắn bạn ạ.
Cảm ơn các bạn rất nhiều vì nhín thời gian giúp đỡ nhé

1640255854618.png
 

File đính kèm

Xin lỗi mọi người vì do edit nhiều nên bị sai sót trong ví dụ minh hoạ nhé.
Công thức này khi mình copy vào file thì thấy kết quả không chính xác ở cột dài và ngắn bạn ạ.
Cảm ơn các bạn rất nhiều vì nhín thời gian giúp đỡ nhé
Lượm lặt được cái hàm tự tạo này. Có lẽ đúng với yêu cầu của bạn
 

File đính kèm

Thử dùng hàm tự tạo:
Mã:
Function Tach3Chieu(Str As String) As Variant
  Dim S As Variant, tmp$
  S = Split(Str, "x")
  tmp = S(0)
  S(0) = S(2)
  S(2) = tmp
  If S(1) < S(2) Then
    tmp = S(1)
    S(1) = S(2)
    S(2) = tmp
  End If
  Tach3Chieu = S
End Function

Cách dùng:

Chọn 3 ô C2: D2, rồi nhập trên thanh công thức:

=Tach3Chieu(A2)

Kết thúc bằng Ctrl +Shift+Enter.

.
..............................


Công thức này khi mình copy vào file thì thấy kết quả không chính xác ở cột dài và ngắn bạn ạ.

2 công thức Dài và Ngắn là công thức mảng, phiên bản excel từ 2016 trở xuống phải kệt thúc bằng Ctrl +Shift+Enter.

.
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn bạn rất nhiều, công thức này chạy rất đúng.
Bài đã được tự động gộp:


Xin lỗi mọi người vì do edit nhiều nên bị sai sót trong ví dụ minh hoạ nhé.
Công thức này khi mình copy vào file thì thấy kết quả không chính xác ở cột dài và ngắn bạn ạ.
Cảm ơn các bạn rất nhiều vì nhín thời gian giúp đỡ nhé

View attachment 270651
Do đã chọn chiều cao là số sau dấu nhân cuối cùng, nên kích thước "Dài" và "Ngắn" chỉ lọc trong 2 số đầu, có thể dùng công thức hằng mảng cũng được, mượn ý của anh @giaiphap góp thêm công thức sau:
Mã:
B2=--RIGHT(SUBSTITUTE(A2,"x",REPT(" ",10)),10)
Enter, fill xuống.
Mã:
C2=AGGREGATE(15-(C$1="dài"),6,--MID(SUBSTITUTE($A2,"x",REPT(" ",10)),{1,10},10),1)
Enter, fill qua cột D, rồi fill xuống.

Thân
 

File đính kèm

Quá nhiều cách xử lý, cám ơn các bạn đã dành thời gian giúp đỡ
Thân
 
Thử dùng hàm tự tạo:
Mã:
Function Tach3Chieu(Str As String) As Variant
  Dim S As Variant, tmp$
  S = Split(Str, "x")
  tmp = S(0)
  S(0) = S(2)
  S(2) = tmp
  If S(1) < S(2) Then
    tmp = S(1)
    S(1) = S(2)
    S(2) = tmp
  End If
  Tach3Chieu = S
End Function

Cách dùng:

Chọn 3 ô C2: D2, rồi nhập trên thanh công thức:

=Tach3Chieu(A2)

Kết thúc bằng Ctrl +Shift+Enter.

.
..............................




2 công thức Dài và Ngắn là công thức mảng, phiên bản excel từ 2016 trở xuống phải kệt thúc bằng Ctrl +Shift+Enter.

.
Trong trường hợp có nhiều cạnh thì thì code mình bổ sung như thế nào được ạ
Ví dụ: nếu thêm cạnh 4, cạnh 5.... (đa giác: nhiều hơn 4 cạnh)
1640574076954.png
 

File đính kèm

Web KT

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

Back
Top Bottom