PDA

View Full Version : Làm thế nào để lập công thức excel tính cước phí điện thoại!



nirvana842005
06-11-07, 11:54 AM
Chào mọi người!
Có anh chị nào biết chỉ giúp em vấn đề này với. Hiện em đang gặp khó khăn trong việc lập công thức excel để tính cước điện thoại. Làm thế nào để cắt lọc tất cả các mã vùng của các số điện thoại? (Có đến mấy trăm mã vùng của các quốc gia trên thế giới). Em đã thử dùng hàm left để cắt mã vùng rồi dùng hàm vlookup để dò tìm tính cước nhưng không có hiệu quả. Các anh chị xem qua file đính kèm dưới đây nhé.
Thanks all,
Huynh Diep

salam
06-11-07, 12:37 PM
Không biết cột mã vùng của bạn ở đâu (Bạn dùng hàm left lấy số liệu ở cột nào thế?"

DOSNET
06-11-07, 12:45 PM
Ý bạn có phải căn cứ vào số thuê bao được gọi truy ra mã vùng, từ đó áp cước cho cuộc gọi phải không....chà... hơi bị phức tạp đấy, không thể dùng hàm Left ở đây được vì số ký tự mã vùng không quy chuẩn...hơn nữa các cuộc gọi cũng không theo một quy luật nhất định, chẳng hạn các cuộc gọi thông qua dịch vụ 171 thì mã vùng lại nằm sau số 171. Xin hỏi thêm bạn một chút, những cuộc gọi, vd như: 6022, 8000 có phải cuộc gọi nội địa không? vì tìm trong mã không thấy có mã 6022...??? Tôi nghĩ với thông tin chỉ là số được gọi đến không giải quyết được bài toán này của ban...

nirvana842005
06-11-07, 02:15 PM
Chào bạn!
Cảm ơn vì đã góp ý giúp đỡ mình. Quay trở lại vấn đề này, mình xin đưa thêm một số thông tin nữa: các số như: 8201, 6022..>> là những số extension (số đt nội bộ), còn các mã nằm đầu như: 171 không phải là dịch vụ 171, mà đó là mã vùng của Mỹ (1 + ...số đt ở đằng sau). Đúng là mình muốn lấy source các cuộc gọi chi tiết của khách hàng để tách mã vùng rồi dùng hàm tính cước, nhưng chưa tìm ra được giải pháp nào cả. Thường thì phải mua phần mềm tính cước tự động, nhưng ở đây mình chỉ dùng hàm và làm các thao tác thủ công thôi. Các bạn biết thì xin chỉ giúp mình xem có cách nào khác không? Những số đt nội bộ mình có thể tách ra bỏ vào sheet khác để làm riêng. Vấn đề là làm sao có thể dùng excel để tính cước điện thoại?
Thanks
Huynh Diep

DOSNET
06-11-07, 02:41 PM
Chào bạn. Nhiệm vụ chính ở đây là phân biệt được mã vùng dựa trên số điện thoại được gọi, trong trường hợp của bạn mình nói khó là vì nó quá đa dạng, bạn thấy không, có những mã nước có 3 mã vùng có giá cước khác nhau, Bangladesh chẳng hạn, vậy thì bài toán bây giờ không thể dùng một mình mã nước mà phải cả mã vùng nữa, tuy nhiên là khó chứ không phải là không có giải pháp, xin hỏi thêm list cuộc gọi bạn update tự động hay copy từ nguồn nào, có thể sửa mã nước cho phù thuân tiện trong việc tính cước không (vì mã này chỉ dành riêng cho bạn) cần phải sửa mã cho phù hợp với list cuộc gọi mà bạn nhận được , VD Ecuador-Quito có mã 593 2 có thể sửa thành 5932, tất cả phải đưa về 1 cái chuẩn thì mới áp dụng được cho những nước khác được. Trên đây là ý kiến riêng của tôi, còn rất nhiều đại cao thủ đang sẵn lòng giúp bạn, hãy cập nhật thông tin đầy đủ nhất trong file của bạn. Thân !

anhtuan1066
06-11-07, 02:45 PM
Tôi có 2 phát hiện trong file này:
Thứ nhất: tôi có cảm giác rằng phải convert number to text thì mới tính dc
Thứ hai: Tại sao trong bảng MA VUNG của bạn lại có mã trùng? Ví dụ: Mã 1 vừa là USA vừa là Canada, vậy khi người ta gọi số có mã =1 thì biết em nào là USA, em nào là Canada?

DOSNET
06-11-07, 02:55 PM
...và khó hơn nữa nếu trùng mã với những anh có đầu 1, 1340..1690 chẳng hạn. Bác Tuấn đã có giải pháp nào hay chưa vậy...?

salam
06-11-07, 02:57 PM
Dialing code của:
United states, Nanada và navassas Island đúng là 1 bạn anhtuan à.

nirvana842005
06-11-07, 03:02 PM
Hi ban!
List các cuộc gọi của khách hàng mình lấy source từ hệ thống CDR (báo chi tiết các cuộc gọi của khách hàng) của công ty mình. Mình copy từ hệ thống sang file excel. Còn bảng giá và mã vùng ban đầu chỉ có mã quốc gia mà thôi, từ các mã quốc gia đó mình vào google search tìm chi tiết các mã vùng cần thiết. Trên bảng giá đó đã có các mã vùng kèm theo mã quốc gia rồi. Vd: Mã quốc gia của Bangladesh là 880 mình đã ghi thêm mã vùng địa phương đằng sau đó là: 880 31, 880 2 ... >> ở đây có thể viết liền nhau: 88031, 8802 như ý bạn đã nói. Điều kiện đặt khoảng cách hay không là do mình chứ không có qui luật nào cả. Nếu để dùng hàm tính toán thì phải viết liền nhau. Bạn chỉ giúp thêm mình phần này nhé.
Thanks
Huynh Diep

anhtuan1066
06-11-07, 03:08 PM
...và khó hơn nữa nếu trùng mã với những anh có đầu 1, 1340..1690 chẳng hạn. Bác Tuấn đã có giải pháp nào hay chưa vậy...?
Chết là ở chổ đó đó... chứ lúc đầu tôi cũng nghĩ ra 1 cách "bùn": Dùng LEFT tách 1 ký tự rồi dò, nếu ko tìm dc thì tách 2 ký tự,.. ko dc nữa thì tách 3 ký tự... vân vân (hình như 6 ký tự là lớn nhất trong MA VUNG)...
Thế nhưng thằng có mã 1304 mà làm thế có khi nó "tưởng" em đó mã 1 chứ ko phải mã 1304... Hic...
Quay trỡ lại vấn đề: Tôi chợt nghĩ làm sao tổng đài điện thoại có thể biết dc chính xác số ta đang gọi là đến nước nào nhỉ? Đại khái nó cũng có cách gì đó đễ biết mã vùng chứ? Thuật toán cũa nó là gì? Nếu ta biết dc giãi thuật này thì xem như bài toán đã giãi xong!

salam
06-11-07, 03:13 PM
Như bác Tuấn nói thì bác dò từ to đến nhỏ được không bác

DOSNET
06-11-07, 03:14 PM
Hi ban!
List các cuộc gọi của khách hàng mình lấy source từ hệ thống CDR (báo chi tiết các cuộc gọi của khách hàng) của công ty mình. Mình copy từ hệ thống sang file excel. Còn bảng giá và mã vùng ban đầu chỉ có mã quốc gia mà thôi, từ các mã quốc gia đó mình vào google search tìm chi tiết các mã vùng cần thiết. Trên bảng giá đó đã có các mã vùng kèm theo mã quốc gia rồi.
Huynh Diep
Ok như vậy là list là bất di bất dịch, không ai dại gì mà động vào nó cả, và việc còn lại là sửa lại mã cho phù hợp và tìm giải pháp tính cước, bạn chú ý đính chính lại các mã: 1, 7, 45 trùng mã nhưng có giá cước khác nhau.

anhtuan1066
06-11-07, 03:17 PM
Như bác Tuấn nói thì bác dò từ to đến nhỏ được không bác
Định là vậy.. nhưng sẽ bị sai lầm... vì 1 số có các chử số đầu là 1340 thì ngay từ đầu dò tìm nó sẽ "hiểu lầm" là 1 chứ ko phải 1340... LEFT(cell,1) là ra ngay kết quả rồi.. lấy đâu có cơ hội dò tiếp

TUAN.IT
06-11-07, 03:18 PM
Theo tôi bạn có thể giải quyết theo hướng sau:
* Bạn dùng hàm LEN để xác định tại cột (số gọi) có độ dài là bao nhiêu. vd : tại cột D6 14083495080 độ dài của chuỗi là 11 thì bạn có thể biết là cuộc ngoại quốc tế sau đó dùng hàm left để tra mã vùng sau, tại ô D2 độ dài của chuỗi là 4 thí bạn biết ngay là mạng nội bộ rồi đúng không

Bạn có thể cho mình biết một số cuộc gọi tại các nước khác thêm được không

anhtuan1066
06-11-07, 03:23 PM
Theo tôi bạn có thể giải quyết theo hướng sau:
* Bạn dùng hàm LEN để xác định tại cột (số gọi) có độ dài là bao nhiêu. vd : tại cột D6 14083495080 độ dài của chuỗi là 11 thì bạn có thể biết là cuộc ngoại quốc tế sau đó dùng hàm left để tra mã vùng sau, tại ô D2 độ dài của chuỗi là 4 thí bạn biết ngay là mạng nội bộ rồi đúng không
Cũng đang có hướng giống như bạn nói... Tuy nhiên ta phải biết dc thật chi tiết về các số quốc tế, chẳng hạn nước nào thì có số bao nhiêu ký tự.. vân vân...
Cái này tôi thật sự ko rành... có lẽ tác giả bài biết nên cung cấp thật tỉ mĩ về các chi tiết liên quan này... Cũng chưa dám hứa có thể giúp dc.. nhưng là.. cầu may.. Biết đâu...

nirvana842005
06-11-07, 03:51 PM
Khách hàng chủ yếu gọi đi Mỹ, nên trên hệ thống chỉ hiển thị các cuộc gọi của khách hàng phần lớn là gọi đi Mỹ thôi. Nhưng nếu sau này có thể có nhiều khách hàng nữa gọi đi các nước khác thì mình cũng phải tính được. Vì thế, mình chỉ có thể đặt thêm những cuộc gọi tùy ý của các nước khác nhau để làm ví dụ thử dùng hàm thôi. Về phần mã quốc gia và mã vùng địa phương thì chỉ có danmark là mình chưa tìm ra được mã địa phương của vùng Danmark-Copenhagen, còn lại những mã khác có giá giống nhau nên mình không tra tìm mã vùng. Mình cũng không biết được mỗi quốc gia qui định độ dài ký tự của số điện thoại là bao nhiêu? và để tra tìm vấn đề này thì phải mất rất nhiều thời gian, cũng không biết là có tìm được hay không?

DOSNET
06-11-07, 03:58 PM
... làm sao tổng đài điện thoại có thể biết dc chính xác số ta đang gọi là đến nước nào nhỉ? Đại khái nó cũng có cách gì đó đễ biết mã vùng chứ? Thuật toán cũa nó là gì? Nếu ta biết dc giãi thuật này thì xem như bài toán đã giãi xong!
Hình như list cuộc gọi đến nó đã chặt ra từng khúc ra rồi bác ạh...nên việc phân biệt mã vùng nó giải quyết ngon lành. Bác thử để ý hoá đơn thanh toán tiền điện thoại mà xem.

nirvana842005
06-11-07, 04:08 PM
Theo mình nghỉ thì tổng đài điện thoại tính cước bằng cách dùng phần mềm khác chứ không phải dùng excel. Và những phần mềm này được các kỹ sư thiết lập theo chương trình nào đó. Mình cũng được sử dụng phần mềm tính cước tự động đó rồi, mình không rành lắm nhưng hình như nó được viết bằng chương trình gì đó rất hay mà không phải ai cũng làm được.

nirvana842005
06-11-07, 04:31 PM
Đây là một bài toán khó (đối với mình). Nếu các bạn có giải pháp nào hay thì nghiên cứu chỉ giúp mình với nhé. Thật ra thì cũng không bắt buộc vì đây là bài toán thử nghiệm đối với mình trong tương lai thôi. Còn công việc này ở công ty mình đã có kế toán billing và các Sếp làm rồi. Cũng sắp đến giờ nghỉ làm việc rồi, mình cũng chuẩn bị về, hẹn gặp lại các bạn hôm sau nhé. Cảm ơn tất cả mọi người đã góp ý và đưa ra những giải pháp giải quyết khó khăn giúp đỡ mình. Chúc mọi người vui vẽ. Bibi

SoiBien
06-11-07, 07:22 PM
Em nghĩ ở đây hệ thống tổng đài dùng thuật toán rẽ nhánh, giống như mình tra tín hiệu Morse vậy.

bạn bấm số 0 --------------> (à, tên này chuẩn bị quốc tế, liên tỉnh, di động)

bạn bấm tiếp số 0 ---------> (tên này gọi quốc tế, chắc rồi!)

bạn bấm tiếp số 1 ---------> (tên này gọi đi mỹ, tính tiền gọi đi Mỹ cho nó)
bạn bấm tiếp số 9 ---------> (tên này gọi di động, chắc rồi!)

bạn bấm tiếp số 5 ---> (tên này gọi sfone, giá Sfone áp vào!)
.......

Chả biết phải không, em đoán thế, tuy nhiên nếu mà như thế thì làm bằng công thức Excel thì hơi căng à nha!!! VBA thôi, hè hè!!!

SoiBien
08-11-07, 07:52 PM
dữ liệu bạn Nirvana post lên là y nguyên từ tổng đài nó đổ số này ra file, hay là bạn có chỉnh sửa rồi? thường tổng đài nó đổ số ra file TXT, hay CSV thôi chứ nhỉ. Bạn cho biết thêm được không? nếu là từ file khác, bạn có thể upload file đó lên được không, không cần toàn bộ, nhưng có các dữ liệu đại diện càng nhiều càng tốt, bây giờ còn thêm cái thằng di động 11 số (168...) của Viettel nữa chứ. mệt nhỉ.!!!

Với lại thêm một ý nữa, tổng đài của bạn không lưu số đầu để quay ra à (Dial out extension thì phải, thường thì là 9,8,0, tùy hệ thống tổng đài) có nó thì mới phân biệt được số local với các dịch vụ khác được chứ (vd bạn có ext 8201, không có số đầu thì không phân biệt được các dịch vụ khác (1088, 1080..., 997,998, hay cách dịch vụ như 8030..)

nirvana842005
09-11-07, 09:13 AM
Chào các bạn!
Mình xin đưa thêm một số thông tin chi tiết về dịch vụ tính cước ở công ty mình để các bạn có thể nghiên cứu giúp mình. Dịch vụ điện thoại ở công ty mình là dịch vụ gọi Quốc tế thông qua Internet hoặc dùng thiết bị đầu cuối nếu muốn gọi bằng điện thoại. Nếu gọi bằng điện thoại thì phải cài đặt thêm thiết bị đầu cuối như: Eztalk...Nếu ra Net để gọi thì phải có card như một số dịch vụ gọi đt quốc tế: voice777, Usvoiz...Vì thế ở đây chỉ tính cước ở các nước ngoài mà thôi, không tính cước cho Vietnam, và di động. Cỏn list các số của khách hàng gọi mình lấy source đó từ hệ thống CDR của công ty mình ( copy qua file excel, thường thì = file CSV). Trên hệ thống cũng không có số 0 nằm đầu. Những số 8201 (extension) mình sẽ tách ra tính cước riêng.

nirvana842005
09-11-07, 11:44 AM
Các bạn có ai biết thì góp ý giúp mình giải bài toán này nhé. Tất nhiên không phải một sớm một chiều, nhưng hy vọng sẽ tìm ra được một hướng đi nào đó tốt hơn.
Thanks all,

SoiBien
09-11-07, 05:36 PM
@Nirvana list CDR này có bảo đảm là tất cả các số có trong danh sách ở đây đều là các cuộc gọi thành công? mình hỏi vậy vì nếu có người gọi sai số thì sao?
tiếp nữa, nếu cuộc gọi ra có gọi đến một extension ở đầu gọi đến thì nó có lưu số extension đó không? ví dụ như Nirvana có extension trong công ty là 8888, số điện thoại của công ty nirvana là 1234567, trụ sở Hà Nội. vậy thì nếu muốn gọi cho bạn, mình sẽ bấm 84.4.1234567.8888, tổng đài của bạn lưu số gì? 84.4.1234567.8888 hay (84.4.1234567).???

Tiger62
09-11-07, 06:57 PM
Tôi đã làm một số việc tương tự như bài toán của Bạn như xây dựng chương trình tìm người được nâng lương theo mã lương và thời hạn nâng lương. Trước hết Bạn phải xây dựng một vùng cố định có hai cột Mã vùng và Giá tiền(/giây/phút) để làm CSDL để hàm VLOOKUP tìm so sánh, sau đó dùng hàm VLOOKUP tham chiếu đến vùng đó để tìm giá theo giá trị của hàm LEFT tìm ra * với giá trị Thời gian gọi. Chúc Bạn thành công với phương pháp này và ứng dụng trong các yêu cầu tương tự khác. BDT-TTQLBMB.__--__

DOSNET
10-11-07, 08:35 AM
Tôi đã làm một số việc tương tự như bài toán của Bạn như xây dựng chương trình tìm người được nâng lương theo mã lương và thời hạn nâng lương. Trước hết Bạn phải xây dựng một vùng cố định có hai cột Mã vùng và Giá tiền(/giây/phút) để làm CSDL để hàm VLOOKUP tìm so sánh, sau đó dùng hàm VLOOKUP tham chiếu đến vùng đó để tìm giá theo giá trị của hàm LEFT tìm ra * với giá trị Thời gian gọi. Chúc Bạn thành công với phương pháp này và ứng dụng trong các yêu cầu tương tự khác. BDT-TTQLBMB.__--__
Bác chẳng chịu theo dõi kỹ đề tài từ đầu, nói chung chung thế tôi cũng làm được.

nirvana842005
10-11-07, 09:21 AM
Mình xin nói thêm một chút về hệ thống CDR của công ty mình: Với các cuộc gọi ở ngoài gọi vào cho công ty >> sau khi bấm số đt của công ty, các bạn sẽ nghe: công ty MyA xin kính chào quý khách, xin vui lòng bấm số nội bộ hoặc thực hiện theo hướng dẫn sau (bấm phím 0 để gặp tiếp tân...). Nếu như các bạn biết chính xác số đt nội bộ của mình (vd: 6024) thì bấm trực tiếp, còn nếu bấm phím 0 để gặp tiếp tân, nv tiếp tân sẽ chuyển máy lên cho mình. Nhưng các cuộc gọi kiểu này không hiển thị số trên hệ thống CDR của công ty. Đối với những số đt nội bộ gọi cho nhau giữa các nhân viên trong công ty (dù là chi nhánh công ty nằm ở đâu) thì hệ thống CDR chỉ hiển thị duy nhất số ext đó (6024 >> 6025..). Chỉ có số ở công ty gọi đi đâu đó (gọi quốc tế), hoặc khách hàng của công ty gọi đi đâu đó thì trên hệ thống CDR mới hiển thị đầy đủ: mã quốc gia + mã vùng + số đt. Riêng với những số gọi sai, hoặc không trả lời, không kết nối, hay bận, thì khi copy sang file excel mình đã xóa đi hết rồi, chỉ còn lại những cuộc gọi thành công mà thôi.

ThuNghi
10-11-07, 09:38 AM
Xin hỏi bạn ví dụ gọi đến 17149953118, thì đây là cuộc gọi 171 và số là 49953118 hay là gọi đến theo mã vùng 1, theo bạn là Canada, (hình như 1 là Mỹ mà).
Còn 8201 -> 6020 là gọi gì vậy, nội bộ??? vì đâu có số mà có 4 số.
Bài này thuộc loại đặc thù.

DOSNET
10-11-07, 09:50 AM
Nrivana nên cho tất cả yêu cầu vào trong file của em và upload lại file. Vì bài toán rất đa dạng nên cần nói kỹ yêu cầu và cung cấp thật nhiều thông tin, càng nhiều càng tốt...

nirvana842005
10-11-07, 10:06 AM
17149953118 > là số gọi đi Mỹ. Canada cũng có mã quốc gia là 1, Mỹ và Canada đều có chung một giá cước nên có thể gộp lại. Còn 8201 -> 6020: là số đt nội bộ gọi cho nhau (8201 gọi cho 6020). Thường thì phải gọi vào số máy bàn của công ty rồi mới bấm tiếp số nội bộ, nhưng ở đây vì cùng là số nội bộ nên hệ thống của công ty các nhân viên IT đã cấu hình cho nó gọi trực tiếp. Mình sẽ upload lại file lên sau. Nhưng mà trên hệ thống CDR hiện tại chỉ thấy các cuộc gọi nội bộ và gọi đi Mỹ thôi, nếu muốn nghiên cứu để lập hàm thì tự mình phải đặt thêm vào list các cuộc gọi khác nhau từ nhiều quốc gia khác nhau. Dữ liệu ở đây không quan trọng, bởi vì sau này mình sẽ lọc riêng những số gọi nội bộ bỏ vào sheet khác để tính riêng. Chủ yếu là dựa vào bảng giá có các mã vùng chuẩn, rồi từ đó mình cũng có thể đặt tùy ý các số điện thoại cho các quốc gia khác nhau để nghiên cứu lập hàm excel. Danh sách các cuộc gọi trên CDR hiện tại khách hàng chỉ gọi có bấy nhiêu số đó thôi. Sau này có thể họ sẽ gọi thêm các quốc gia khác thì chưa biết được. Nhưng mình có thể tự ý đặt thêm list các cuộc gọi vào đó để đủ điều kiện dễ dàng hơn cho việc lập công thức.

SoiBien
10-11-07, 04:11 PM
Nhưng các cuộc gọi kiểu này không hiển thị số trên hệ thống CDR của công ty. Đối với những số đt nội bộ gọi cho nhau giữa các nhân viên trong công ty (dù là chi nhánh công ty nằm ở đâu) thì hệ thống CDR chỉ hiển thị duy nhất số ext đó (6024 >> 6025..).

Phần này mình biết, mình chỉ hỏi phần dưới.

Chỉ có số ở công ty gọi đi đâu đó (gọi quốc tế), hoặc khách hàng của công ty gọi đi đâu đó thì trên hệ thống CDR mới hiển thị đầy đủ: mã quốc gia + mã vùng + số đt (có + với số extension của họ không?).

ý mình là hỏi bạn phần có màu đỏ.

BNTT
10-11-07, 04:55 PM
Cái ông SoiBien này, mệt quá! Hình như ông hỏi câu này 2 lần rồi. Nếu mà có thì người ta đã trả lời cho ông. Số điện thoại gọi đi Mỹ có cấu trúc như sau:
1 XXX yyy yyyy (11 số)
1 là mã của Mỹ, XXX là mã vùng (bang), còn yyy yyyy (7 số) là số điện thoại.
Trong file bạn ấy gửi lên, những số dài (mà bắt đầu bằng 1) toàn là 11 số thôi. Đó là những cuộc gọi đi Mỹ.

Tôi theo dõi bài này từ đầu, quả thật là rất khó, chứ không chỉ là khó, nếu như tác giả không tách ra được một cột chỉ ghi mã quốc gia.
Ví dụ, riêng VN thôi, thì nếu
gọi tới TpHCM: 84 8 1234567 (10 số)
gọi vào di động ở VN: 84 9 82827762 (11 số)
gọi vào số máy ở Đồng Nai: 84 613 123456 (11 số)
v.v... Đó là chưa nói mai mốt Bưu chính viễn thông lại tăng thêm đầu số...
Kiểu này thì dùng hàm (Left hay Len chẳng hạn) là bó tay. Mà dùng VBA thì tôi nghĩ hoài chưa ra.

Tiger62
10-11-07, 05:59 PM
Tôi đã đọc toàn bộ bài này từ đầu. Bạn nirvana842005 hãy chuẩn bị một file dữ liệu có đầy đủ thông tin và yêu cầu tính toán, kết xuất dữ liệu. Chắc Bạn cũng hiểu một cơ sở dữ liệu phải có sắp xếp, phân tổ thống kê đầy đủ, có đầy đủ các trường hợp xảy ra, ý tôi muốn nói phải có đầy đủ thông tin về tổ chức CSDL. Việc phân tổ các loại số ĐT cũng phải đặt ra và dùng các hàm xử lý chuỗi để tách các thành phần của số dù có 2 đến 11,12,... chữ số đều tách ra được cả theo từng nhóm số. Tôi cũng hay sử dụng hàm VLOOKUP để tìm kiếm thông tin trong CSDL và tính toán, tôi sẽ lập bảng tính giải bài toán trên để Bạn tham khảo.

Tiger62
10-11-07, 06:17 PM
Để xử lý chuỗi, tôi thường phải kết hợp nhiều hàm với nhau kể cả các hàm logic, hàm đo đếm, tìm kiếm,... Ví dụ có thể tách tên tiếng Việt ( tên đứng sau cùng ) và tiếng Việt là một âm và hình như không có âm nào quá 7-8 chữ cái thì phải : B66=IF(CODE(RIGHT(A66,2))=32,RIGHT(A66,1),IF(CODE( RIGHT(A66,3))=32,RIGHT(A66,2),IF(CODE(RIGHT(A66,4) )=32,RIGHT(A66,3),IF(CODE(RIGHT(A66,5))=32,RIGHT(A 66,4),IF(CODE(RIGHT(A66,6))=32,RIGHT(A66,5),IF(COD E(RIGHT(A66,7))=32,RIGHT(A66,6),RIGHT(A66,7)))))))
=ccccccc . A66=aaaa bbbb ccccccc.

SoiBien
11-11-07, 02:58 PM
đây là file mình làm, bạn xem nhé.

nirvana842005
12-11-07, 10:05 AM
Chào bạn SoiBien!
Bạn upload lên file tracuuMavung của bạn một lần nữa giúp mình với nhé. Vì mình không thể download được file của bạn về. Còn phần mà bạn hỏi về những số ext thì hệ thống CDR của mình có hiển thị số ext nhưng chỉ có số ext thôi, không có mã vùng đằng trước nó. (những ext này mình sẽ bỏ vào một sheet khác để tính riêng). Chủ yếu là làm thế nào đó để xác định được mã vùng các quốc trên thế giới nằm đằng trước số đt của khách hàng mà thôi. (ext mình sẽ bỏ riêng vào sheet khác). Hiện tại mình chưa download được file của bạn về. Mình cũng có một hướng đi cho bài toán của mình (file đính kèm bên dưới), nhưng vẫn chưa hoàn thành và không biết có đúng không?, mình upload lên đây nhờ các bạn góp ý và phát triễn thêm giúp mình.
Thanks
Huỳnh Diệp

SoiBien
12-11-07, 12:08 PM
Chào bạn SoiBien!
Bạn upload lên file tracuuMavung của bạn một lần nữa giúp mình với nhé. Vì mình không thể download được file của bạn về.

Kỳ nhỉ, sao thấy người khác vẫn load được mà!

SoiBien
12-11-07, 05:34 PM
Nirvana dù sao cũng là một band yêu thích của mình ngày còn bé. :dBác Anh Tuấn làm ơn gửi mail giúp em với, em đang ở ngoài vùng phủ sóng của Sfone, bó càng, vô internet khó quá.

nirvana842005
12-11-07, 08:53 PM
Cảm ơn bạn SoiBien nhé! Mình đã nhận được file của bạn rồi, tiện đây cũng xin cảm ơn Bác anhtuan1066 đã gửi email cho nirvana. Bạn SoiBien oi! file của bạn mình đã đọc nhưng mình có một số vấn đề chưa hiểu muốn hỏi bạn nhờ bạn hướng dẫn thêm nhé. File của bạn hình như viết bằng VBA, có dùng macro trong đó. Và Công thức bạn sử dụng chỉ xử lý được dữ liệu trực tiếp mà không thể chạy tự động được. Mỗi khi mình thay số đt khác vào cột Số gọi thì nó báo lỗi #name, không load được dữ liệu ở cột mã vùng và giá cước. Nếu như thế thì e rằng sẽ khó cho mình về sau này, vì mình muốn dùng công thức làm sao đó để có thể sử dụng mọi lúc, chỉ cần copy list các cuộc gọi của khách hàng vào là file excel tự động tính cước cho mình thôi. Bởi vì sau này sẽ có hàng ngàn khách hàng với vô số cuộc gọi. Mà VBA thì mình không biết gì cả, mà dùng VBA để làm bài toán này thì quả là khó. Bạn SoiBien ah! Bạn có thể dùng theo cách của mình để phát triễn thêm giúp mình được không. (file đính kèm mình đã up len ở trên đó).
Thanks
Huỳnh Diệp

SoiBien
12-11-07, 09:29 PM
Lỗi #name chắc có lẽ là do bạn chưa đặt excel của bạn ở chế độ enable macro, vậy bạn đóng file tracuu lại, rồi vào menu Tools/options/ chọn tab security, chọn mục Macro Security, chọn Medium, OK, OK

Rồi bạn mở ra lại lần nữa file tracuu, chọn enable Macro, thử nhập lại công thức xem sao?
trong công thức, =searchbycountrycode(D2,data,4)

thì d2 là số gọi,
data là vùng từ A2:E361 của sheet tinhcuoc,
4 là cột để lấy giá trị tương ứng
(hàm tương tự như hàm Vlookup).

Thử xem thế nào bạn?

anhtuan1066
12-11-07, 09:30 PM
Nếu bị lỗi #Name bạn thử bấm F9 xem có dc ko?
ANH TUẤN

nirvana842005
14-11-07, 02:35 PM
%#^#$ giup em hoan thien phan tinh cuoc VN nay nua nhe.
Thanks

SoiBien
14-11-07, 03:04 PM
%#^#$ giup em hoan thien phan tinh cuoc VN nay nua nhe.
Thanks

Phần này thêm phần tính cước Local và Ext - Ext