tách 1 số thành từng chữ số riêng biệt (4 người xem)

Liên hệ QC

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

phantuanviet

Thành viên mới
Tham gia
14/4/09
Bài viết
12
Được thích
0
Mọi người giúp mình ví dụ này

A1=1234.56
mình muốn có kết quả từng ô thế này
A2=1 ===> (chữ số hàng nghìn)
A3=2 ===> (chữ số hàng trăm)
A4=3 ===> (chữ số hàng chục)
A5=4 ===> (chữ số hàng đơn vị)
A6=1 ===> (chữ số hàng phần 10)

=> Tách đến đây không có vấn đề gì. Nhưng tại ô A7 muốn tách ra chữ số hàng % thì gán A7 với hàm Vlookup không nhận được (có thể áp dụng công thức không chuẩn), không hiểu lí do tại sao ???
VD: B1=0 B2=1 ... B9=8 B10=9
C1=A C2=B ... C9=I C10=J
A8=VLOOKUP(A7,B1:C10,2,0) => #N/A (LẼ RA PHẢI CHO KẾT QUẢ LÀ I)

mình có thể dùng tại a7=value(right(a1,1)) nhưng với trương hợp a1=1234.50 thì lại không được
mong mọi người có thể giúp và post file cho ví dụ đơn giản này
THS!
 
Lần chỉnh sửa cuối:
Bạn có thể đưa file cụ thể bạn đang làm và ghi rõ kết quả mong muốn vào đó để mọi người dễ hiểu hơn không?


mình có thể dùng tại a7=value(right(a1,1)) nhưng với trương hợp a1=1234.50 thì lại không được
Vậy bạn thử dùng:
PHP:
A7=RIGHT(TEXT(A1,"#.#0"))
 
Lần chỉnh sửa cuối:
Dùng Mid kết hợp Find như file này được không?
 

File đính kèm

Lần chỉnh sửa cuối:
Dùng Mid kết hợp Find như file này được không?
Bạn xem lại công thức xem sao, vì mình mở file của bạn lên thì công thức bị #Value.

Tuy nhiên xem qua công thức mình nghĩ bạn có thể thực hiện như sau:
Giả sử Ô A1=12345.67891
Ô B1 gõ: B1 = MID($A$1,ROWS($1:1),1)

Sau đó copy down công thức xuống dưới là xong.
 
Bạn xem lại công thức xem sao, vì mình mở file của bạn lên thì công thức bị #Value.

Tuy nhiên xem qua công thức mình nghĩ bạn có thể thực hiện như sau:
Giả sử Ô A1=12345.67891
Ô B1 gõ: B1 = MID($A$1,ROWS($1:1),1)

Sau đó copy down công thức xuống dưới là xong.
Chưa thử, nhưng ngó sơ qua công thức thì thấy kết quả ở ô B6 sẽ là 1 dấu chấm (.)
Không biết là như thế thì tác giả topic này có hài lòng không?
 
mình thực hiện theo các ban không được.
xin chỉ dẫn thêm
Ý của mình là thế này:
- Mình có 1 giá trị < 10000 có dạng 1234,56
Yêu cầu: tách riêng được từng chữ số và kết hợp được từng chữ số đó vơi vlookup.
làm theo cách của 2 bạn đều không được. (báo #N/A)
 
Lần chỉnh sửa cuối:
mình thực hiện theo các ban không được.
xin chỉ dẫn thêm
Ý của mình là thế này:
- Mình có 1 giá trị < 1000 có dạng 1234,56
Yêu cầu: tách riêng được từng chữ số và kết hợp được từng chữ số đó vơi vlookup.
làm theo cách của 2 bạn đều không được. (báo #N/A)
Một con số < 1000 thì không thể có dạng 1234,56 được! 1234,56 là một con số > 1000 mà?
 
Lần chỉnh sửa cuối:
Mình đánh nhầm
số nhỏ hơn 10000 và có 2 chữ số phần thập phân
tách ra được nhưng không kết hợp với vlookup được ???
Xin giúp đỡ
 
Mình đánh nhầm
số nhỏ hơn 10000 và có 2 chữ số phần thập phân
tách ra được nhưng không kết hợp với vlookup được ???
Xin giúp đỡ
Bạn dùng cái này thử xem:

Mở VBE (Alt+F11), Insert một Module, rồi trong Module đó gõ cái này vào:
PHP:
Function TachSo(ConSo, Optional Vitri = 1)
    If Len(Int(ConSo)) > 4 Then TachSo = "Incorect Number!": Exit Function
    If Len(ConSo) = Len(Int(ConSo)) Then
        If Vitri > Len(Int(ConSo)) Then TachSo = "Missing Number!": Exit Function
    Else
        If Vitri > Len(ConSo) - 1 Then TachSo = "Missing Number!": Exit Function
        If Vitri >= WorksheetFunction.Find(".", ConSo) Then Vitri = Vitri + 1
    End If
    TachSo = Mid(ConSo, Vitri, 1) * 1
End Function
Ra ngoài bảng tính, ví dụ con số bạn đang để ở ô A1, và bạn muốn tách con số này ra từng con số bắt đầu từ hàng thứ 2 (từ ô A2), tại ô A2 bạn gõ công thức:
=TachSo($A$1, ROW()-1)​
Rồi kéo xuống dưới.

Nếu như kết quả bạn nhận được là "Missing Number!" thì đó là đã hết giới hạn chiều dài con số của bạn. Bạn xóa mấy cái ô đó đi là xong. Còn nếu như kết quả bạn nhận được là "Incorrect Number!" thì đó là do bạn đã xài một con số > 9999.

Nói thêm: Công thức này chỉ chạy đúng nếu như định dạng số bạn đang dùng là kiểu Mỹ (dấu phân cách hàng nghìn là dấu chấm). Lỡ như bạn dùng định dạng số kiểu Việt Nam (dấu phân cách hàng nghìn là dấu phẩy), thì bạn sửa cái dấu chấm của hàm FIND trong cái code của TachSo thành dấu phẩy:
PHP:
If Vitri >= WorksheetFunction.Find(",", ConSo) Then Vitri = Vitri + 1
 
Lần chỉnh sửa cuối:
Mọi người giúp mình ví dụ này

A1=1234.56
mình muốn có kết quả từng ô thế này
A2=1 ===> (chữ số hàng nghìn)
A3=2 ===> (chữ số hàng trăm)
A4=3 ===> (chữ số hàng chục)
A5=4 ===> (chữ số hàng đơn vị)
A6=1 ===> (chữ số hàng phần 10)

=> Tách đến đây không có vấn đề gì. Nhưng tại ô A7 muốn tách ra chữ số hàng % thì gán A7 với hàm Vlookup không nhận được (có thể áp dụng công thức không chuẩn), không hiểu lí do tại sao ???
VD: B1=0 B2=1 ... B9=8 B10=9
C1=A C2=B ... C9=I C10=J
A8=VLOOKUP(A7,B1:C10,2,0) => #N/A (LẼ RA PHẢI CHO KẾT QUẢ LÀ I)

mình có thể dùng tại a7=value(right(a1,1)) nhưng với trương hợp a1=1234.50 thì lại không được
mong mọi người có thể giúp và post file cho ví dụ đơn giản này
THS!

Mời mọi người xem file. Trong file là hai cách làm. Một cách dùng công thức tính toán với số nguồn đề lấy ra từng chữ số. Một cách chuyển số nguồn sang chuỗi và dùng Mid().
 

File đính kèm

Mình đánh nhầm
số nhỏ hơn 10000 và có 2 chữ số phần thập phân
tách ra được nhưng không kết hợp với vlookup được ???
Xin giúp đỡ

Với cách của mình thì:
- Nếu chỉ tách số: giới hạn trong phạm vi của excell
- Để tìm như yêu cầu của phantuanviet (dùng vlookup) thì số chữ số tối đa là 10 và không trùng nhau, số thập phan tùy ý. (từ 0 đến 9)
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn xem lại công thức xem sao, vì mình mở file của bạn lên thì công thức bị #Value.


CÓ lẻ do mình đang định dạng dấu phân cách thập phân là ",".


Tuy nhiên xem qua công thức mình nghĩ bạn có thể thực hiện như sau:
Giả sử Ô A1=12345.67891
Ô B1 gõ: B1 = MID($A$1,ROWS($1:1),1)
Sau đó copy down công thức xuống dưới là xong.

Trích lời của BNTT:
BNTT đã viết:
ngó sơ qua công thức thì thấy kết quả ở ô B6 sẽ là 1 dấu chấm (.)
Không biết là như thế thì tác giả topic này có hài lòng không?
 
Gửi các bạn bản nâng cấp của TachSo():
PHP:
Function TachSo(ConSo, Optional Vitri = 1) As Byte
    ConSo = Abs(ConSo)
    If Vitri >= Len(Int(ConSo)) + 1 Then Vitri = Vitri + 1
    TachSo = Mid(ConSo, Vitri, 1)
End Function
Với hàm TachSo() này, khỏi lo dấu phân cách thập phân đang sử dụng trong Excel là dấu chấm hay hay phẩy, và không giới hạn độ lớn của con số luôn, số âm số dương gì cũng OK hết.

Lần này thì tôi không bẫy lỗi nữa. Nếu như kết quả nhận được là #VALUE! thì có nghĩa là cái con số muốn lấy ra đã vượt khỏi chiều dài của con số gốc... Ví dụ con số gốc có 7 chữ số, mà lại bỉu nó đi tìm con số nằm ở vị trí thứ 8.
=Tachso(12345.67, 6) = 6
=Tachso(12345.67, 8) = #VALUE!

Cách sử dụng trong bảng tính vẫn như cũ:
=TachSo(ConSo, Vitri)​
Địa chỉ của ConSo nên sử dụng địa chỉ tuyệt đối.
Vitri thì nếu không gõ vào, sẽ mặc định là con số đầu tiên, còn không thì gõ vào vị trí của con số muốn lấy ra, hoặc có thể dùng hàm để chỉ ra (ROW hay COLUMN gì đó chẳng hạn).
 
Lần chỉnh sửa cuối:
Các anh chị cao thủ giúp em vấn đề nhé , em không rành excel , cách anh chị viết code VBA giúp em vì công thức hàm em gà mờ lắm nên dùng code cho an toàn ko bị sai sót khi nhằm CT . Vấn đề là vây em có file vidu khi nhập bất kỳ giá trị nào vào ô nhập số tiền ( số tiền lớn hay nhỏ ) thì kết quả sẽ tách ra phần số lẻ và phần nguyên theo từng cột từ hàng đơn vị đếm lên . Xin cảm ơn tất cả mọi người giúp đỡ
 

File đính kèm

Các anh chị cao thủ giúp em vấn đề nhé , em không rành excel , cách anh chị viết code VBA giúp em vì công thức hàm em gà mờ lắm nên dùng code cho an toàn ko bị sai sót khi nhằm CT . Vấn đề là vây em có file vidu khi nhập bất kỳ giá trị nào vào ô nhập số tiền ( số tiền lớn hay nhỏ ) thì kết quả sẽ tách ra phần số lẻ và phần nguyên theo từng cột từ hàng đơn vị đếm lên . Xin cảm ơn tất cả mọi người giúp đỡ

Dán Công thức này vào P12:

Mã:
=IFERROR(MID(SUBSTITUTE(SUBSTITUTE(TEXT($A12,"#,##0.00"),",",""),".",""),LEN(SUBSTITUTE(SUBSTITUTE(TEXT($A12,"#,##0.00"),",",""),".",""))-(COLUMN($P:$P)-COLUMN()),1),"")

Sau đó Fill ngược sang bên trái đến C12
 
Cảm ơn bạn KhuongVietPong rất nhiều bạn hoặc mọi người có thể giúp mình bằng VBA không vì file này rất nhiều người sử dụng nên khó tránh khỏi việc công thức bị người vô tình hoặc cố ý sửa đổi . Cảm ơn rất nhiều với sự giúp đỡ của mọi người!
 
Quay lại vấn đề của chủ thớt, e cũng vướng vấn đề tương tự nhưng e muốn tách hàng đơn vị theo hàng đơn vị, hàng chục theo hàng chục..... như hình
216667
Các anh chị cho e xin giải pháp với ạ
 
File cũng chỉ vỏn vẹn như hình nên mình nghĩ chụp hình lên cũng ổn rồi
 

File đính kèm

Web KT

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

Back
Top Bottom