Ghép dữ liệu từ nhiều ô theo danh sách duy nhất

  • Thread starter Thread starter SoiBien
  • Ngày gửi Ngày gửi
Liên hệ QC

SoiBien

Thành viên tiêu biểu
Tham gia
3/9/07
Bài viết
734
Được thích
609
Các bạn cho hỏi cách làm công thức này với !

Em có một cột dữ liệu về currency và Exchange rates như sau :

|
A​
|
B​
|
1​
|
|
Amount in currency and Exchange rates​
|
2​
| |USD 33.30 @ 20100.000000|
3​
| |GBP 55.50 @ 30100.000000|
4​
| | |
5​
| |USD 11.10 @ 20100.000000|
6​
| |EUR 22.20 @ 40100.000000|
7​
| | |
8​
|KQ:|USD20100, GBP30100, EUR40100|

Em cần lấy ra một chuỗi như ô kết quả gồm duy nhất một chi tiết exchange rate cho mỗi currency, liệu chỉ một công thức không dùng các cột phụ có thể lấy ra được kết quả không? các bạn giúp mình với.
 
Các bạn cho hỏi cách làm công thức này với !

Em có một cột dữ liệu về currency và Exchange rates như sau :

|
A​
|
B​
|
1​
|
|
Amount in currency and Exchange rates​
|
2​
| |USD 33.30 @ 20100.000000|
3​
| |GBP 55.50 @ 30100.000000|
4​
| | |
5​
| |USD 11.10 @ 20100.000000|
6​
| |EUR 22.20 @ 40100.000000|
7​
| | |
8​
|KQ:|USD20100, GBP30100, EUR40100|

Em cần lấy ra một chuỗi như ô kết quả gồm duy nhất một chi tiết exchange rate cho mỗi currency, liệu chỉ một công thức không dùng các cột phụ có thể lấy ra được kết quả không? các bạn giúp mình với.
Công thức vẫn bị "yếu" về mấy vụ nối chuổi nên yêu cầu của bài toán này chắc là... THUA ---> Dùng UDF đi thôi SoiBien à
 
Tiếc là cái phần mềm công ty em đang xài nó chỉ hỗ trợ customize các reports excel dùng công thức có sẵn của excel thôi, UDF thì nó không hỗ trợ, buồn ghê !

Giả sử như dữ liệu đầu vào chỉ có 5 cell thôi, liệu có dùng công thức khác được không?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Các bạn cho hỏi cách làm công thức này với !

Em có một cột dữ liệu về currency và Exchange rates như sau :

|
A​
|
B​
|
1​
|
|
Amount in currency and Exchange rates​
|
2​
| |USD 33.30 @ 20100.000000|
3​
| |GBP 55.50 @ 30100.000000|
4​
| | |
5​
| |USD 11.10 @ 20100.000000|
6​
| |EUR 22.20 @ 40100.000000|
7​
| | |
8​
|KQ:|USD20100, GBP30100, EUR40100|

Em cần lấy ra một chuỗi như ô kết quả gồm duy nhất một chi tiết exchange rate cho mỗi currency, liệu chỉ một công thức không dùng các cột phụ có thể lấy ra được kết quả không? các bạn giúp mình với.

Em gửi anh file mẫu. Công thức dùng được cho 5 loại ngoại tệ khác nhau.
Anh có thể tăng số dòng dữ liệu hay tăng số loại ngoại tệ bằng cách sửa và thêm các Name tương tự.
Do không có thời gian nhiều nên em chưa thể rút ngắn gọn các công thức.
 

File đính kèm

HD ơi, công thức thì chạy đúng rồi, tuy nhiên khi áp dụng vào cái report của mình, vị trí dữ liệu (name data) sẽ nằm ở vị trí khác, cụ thể là $D$34:$D$38, tới đây thì công thức chạy không được, HD sửa giùm được không, và dùng name data bằng indirect nhé, vì phần mềm sẽ thay đổi so với form mình thiết kế. đính kèm file ví dụ
 

File đính kèm

Lâu lắm mới thấy HoangDanh trả lời bài, mà công lực vẫn thâm hậu (nếu không nói là tiến triển hơn xưa).

To SoiBien:

Vấn đề không phải Name Data hay Name Data2, hay Data3. 3 Name này giữ nguyên như Hoang Danh. Nhất là Name Data, không cần phải dùng Indirect. Dùng Indirect lỡ chèn cột bên trái, chèn dòng bên trên là tiêu.
Vấn đề nằm ở chỗ 5 Name Str:

Str1=LEFT(INDEX(Data;SMALL(Data3;1)-1;1); 3)&VALUE(TRIM(RIGHT(SUBSTITUTE(INDEX(Data; SMALL(Data3;1)-1;1);"@"; REPT(" ";"100"));100)))

Thay chỗ trừ 1 đỏ đỏ bằng:
-Row(data)+1

Str1=LEFT(INDEX(Data;SMALL(Data3;1)-ROW(Data)+1;1) ;3)&VALUE(TRIM(RIGHT(SUBSTITUTE(INDEX(Data;SMALL(Data3; 1)-ROW(Data)+1;1); "@";REPT(" ";"100"));100)))

sẽ ổn mọi đàng.
 

File đính kèm

Lần chỉnh sửa cuối:
Tks bác Ptm đã sửa công thức, vấn đề indirect thì quả thật là em cần như vậy.

Liệu còn cách dùng công thức khác không hả các anh ơi, chứ hiện giờ phần mềm khi nó xuất cái form này ra thì data3=#N/A, em nghĩ rằng nó không process được tính toán trong name.
 

File đính kèm

Lần chỉnh sửa cuối:
Liệu còn cách dùng công thức khác không hả các anh ơi, chứ hiện giờ phần mềm khi nó xuất cái form này ra thì data3=#N/A, em nghĩ rằng nó không process được tính toán trong name.

Anh cứ gửi nguyên cái file có #N/A lên đây thì sẽ có cách sửa cho phù hợp ah. Chứ anh hỏi cách khác nữa thì chưa chắc gì lại không bị #N/A như anh nói. Quan trọng là cấu trúc file của anh nó như thế nào, bị lỗi ra sao thì mới giải quyết được vấn đề.
 
Tks bác Ptm đã sửa công thức, vấn đề indirect thì quả thật là em cần như vậy.

Liệu còn cách dùng công thức khác không hả các anh ơi, chứ hiện giờ phần mềm khi nó xuất cái form này ra thì data3=#N/A, em nghĩ rằng nó không process được tính toán trong name.
Thử file này xem thế nào nha... Tôi đặt các name như sau:
PHP:
Pos=IF(MATCH("*"&LEFT(TRIM(Data),3)&"*",Data,0)=ROW(INDIRECT("1:"&ROWS(Data))),ROW(INDIRECT("1:"&ROWS(Data))),"")
PHP:
Tmp=IF(Data="","",TRIM(LEFT(SUBSTITUTE(MID(Data,FIND("@",Data)+1,LEN(Data)),".",REPT(" ",LEN(Data))),LEN(Data))))
PHP:
Text1=IF(COUNT(Pos)>0,LEFT(INDEX(TRIM(Data),SMALL(Pos,1)),3)&INDEX(Tmp,SMALL(Pos,1)),"")
PHP:
Text2=IF(COUNT(Pos)>1,", "&LEFT(INDEX(TRIM(Data),SMALL(Pos,2)),3)&INDEX(Tmp,SMALL(Pos,2)),"")
.....
.....
.....
PHP:
Text8=IF(COUNT(Pos)>7,", "&LEFT(INDEX(TRIM(Data),SMALL(Pos,8)),3)&INDEX(Tmp,SMALL(Pos,8)),"")
Còn name Data thì tùy bạn đặt (miễn là 1 cột)
Công thức xuất dữ liệu:
PHP:
=Text1&Text2&Text3&Text4&Text5&Text6&Text7&Text8
 

File đính kèm

Gủi anh thêm một cách đơn giản này, anh thử xem có ok không.
Đặt các Name sau :

Data :
PHP:
=Sheet1!$A$2:$A$10
USD :
PHP:
="USD"&--TRIM(RIGHT(SUBSTITUTE(INDEX(Data,MATCH("usd"&"*",Data,0)),"@",REPT(" ",100)),100))
GBP :
PHP:
="GBP"&--TRIM(RIGHT(SUBSTITUTE(INDEX(Data,MATCH("gbp"&"*",Data,0)),"@",REPT(" ",100)),100))
EUR :
PHP:
="EUR"&--TRIM(RIGHT(SUBSTITUTE(INDEX(Data,MATCH("eur"&"*",Data,0)),"@",REPT(" ",100)),100))
JPY :
PHP:
="JPY"&--TRIM(RIGHT(SUBSTITUTE(INDEX(Data,MATCH("jpy"&"*",Data,0)),"@",REPT(" ",100)),100))
AUD :
PHP:
="AUD"&--TRIM(RIGHT(SUBSTITUTE(INDEX(Data,MATCH("aud"&"*",Data,0)),"@",REPT(" ",100)),100))
Công thức cuối cùng là việc ghép chuỗi thôi :
PHP:
=IF(ISNA(usd),"",usd)&", "&IF(ISNA(gbp),"",gbp)&", "&IF(ISNA(eur),"",eur)&", "&IF(ISNA(jpy),"",jpy)&", "&IF(ISNA(aud),"",aud)
Nếu anh muốn tăng thêm số loại ngoại tệ thì anh thêm Name vào.
 

File đính kèm

Tks bác Ptm đã sửa công thức, vấn đề indirect thì quả thật là em cần như vậy.

Liệu còn cách dùng công thức khác không hả các anh ơi, chứ hiện giờ phần mềm khi nó xuất cái form này ra thì data3=#N/A, em nghĩ rằng nó không process được tính toán trong name.

Khi mở file ra, nếu Name Data3 bị #N/A thì anh copy cái công thức của em rồi paste vào là ok thôi. Em đã test ok rồi.
 
Ah ah ah ! Cách sau của HD đã WORKED ! Em đang thử cách của bác NDU!
Trời đất rắc rối ghê, tới đây tưởng xong rồi, giờ lại lòi ra thêm vấn đề nữa, tức là với form này, thông thường sẽ in ra 3 liên (ta có thể chọn option này từ phần mềm), cái phần mềm này khi in ra 3 liên như vậy thì nó sẽ tự động thêm số "1 - "sheetname vào sheetname, toàn bộ name sẽ bị nhân lên 2 hoặc 3 lần cho nên name data bây giờ sẽ tèo. Các bác coi file xuất ra từ phần mềm để tham khảo và giúp đỡ thêm ý kiến với công thức giúp em nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Nếu thấy phương pháp giải trên không phù hợp với cái phần mềm này, hay là dữ liệu đẩu vào dạng khác ví dụ cụ thể dữ liệu từ phần mềm lấy ra em sẽ lấy được một chuỗi như sau : "VND:1, USD:20100, USD:20100, EUR:30100, 0" nằm trong một ô thôi, giờ mình cần cắt bỏ VND1, 0, và những cụm MoneyExchange trùng nhau, như cụm trên thì ta chỉ lấy : "USD:20100, EUR:30100", tks các bác.
 
Nếu thấy phương pháp giải trên không phù hợp với cái phần mềm này, hay là dữ liệu đẩu vào dạng khác ví dụ cụ thể dữ liệu từ phần mềm lấy ra em sẽ lấy được một chuỗi như sau : "VND:1, USD:20100, USD:20100, EUR:30100, 0" nằm trong một ô thôi, giờ mình cần cắt bỏ VND1, 0, và những cụm MoneyExchange trùng nhau, như cụm trên thì ta chỉ lấy : "USD:20100, EUR:30100", tks các bác.

Bạn xem link sau nhé
http://www.giaiphapexcel.com/forum/showthread.php?25348-Lấy-dữ-liệu-duy-nhất-từ-1-chuổi
 
Giải pháp UDF thì không được rồi, còn file công thức của bạn thang thì em đang xem, nhưng chắc khó áp dụng quá.
 
Web KT

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

Back
Top Bottom