Giả sử mình nhập tại ô A1 có kiểu dữ liệu là số
A1 = 9000+15000
Tại ô A2 mình muốn có kết quả là 15000 (nghĩa là chỉ lấy con số phía sau dấu + tại ô A1 thì phải làm thế nào ạ?



Giả sử mình nhập tại ô A1 có kiểu dữ liệu là số
A1 = 9000+15000
Tại ô A2 mình muốn có kết quả là 15000 (nghĩa là chỉ lấy con số phía sau dấu + tại ô A1 thì phải làm thế nào ạ?
=RIGHT(A1,FIND("+",A1))
Bạn phải chuyển công thức đó thành text rồi mới sử dụng đc công thức, mà công thức cũng phải làTại ô A2 bạn gõ công thức
cơ chứ công thức của b chưa đúng rồi=RIGHT(A1,LEN(A1)-FIND("+",A1))



Như vầy có vẻ nhanh hơn nè.Có một mẹo nhỏ dành cho bạn :
1. Bạn bấm Ctrl + H để gọi hộp hội thoại Find and Replace
2. Thay thế tất cả dấu "=" thành dấu " ' "
3. Sử dụng hàm xử lý chuỗi để tách.
Giả sử sau khi xong bước 1 và 2 dữ liệu cần tách nằm ở A1, công thức tách như sau :
=--RIGHT(A1,LEN(A1)-FIND("+",A1))
Tại ô A2 bạn gõ công thức
Như vầy có vẻ nhanh hơn nè.
1. Copy A1 rồi Paste vào A2, chọn A2
2. Ctr+H, nhập "=*+" vào Find what, nhấn Replace
Nếu không muốn giữ dữ liệu gốc thì không cần copy
Bạn phải chuyển công thức đó thành text rồi mới sử dụng đc công thức, mà công thức cũng phải là
cơ chứ công thức của b chưa đúng rồi
Bạn làm như chị hoamatroicoi hướng dẫn ý
Bạn xem file đúng ý mình chưa.Vì dữ liệu nhiều nên e muốn đặt công thức tại ô khác để lấy tự động chứ không thể chuyển qua text rồi làm được a, có cách nào khác không a
Bạn xem file đúng ý mình chưa.
Bạn xem file đúng ý mình chưa.
cho hỏi =GET.CELL(6,Sheet1!C2) là hàm hay lệnh gì vậy, cách sử dung như thế nàoBạn xem file đúng ý mình chưa.
Ô E1 gõ lại công thức như sau:con số phía sau dấu + không cố định là 6 ký tự nha a, nó luôn giao động từ 2 ký tự đến 7 ký tự a, đã thử nhập sau dấu + khác 5 ký tự là bị lỗi à
=RIGHT(GetFor,LEN(GetFor)-FIND("+",GetFor))
Bác này lại làm khó mình rồi, mình chỉ học mót thôi nên giải thích thì mình thua thật.cho hỏi =GET.CELL(6,Sheet1!C2) là hàm hay lệnh gì vậy, cách sử dung như thế nào



Đã thử nhưng không được, báo lỗi value à

Ô E1 gõ lại công thức như sau:
Fill CT xuống.Mã:=RIGHT(GetFor,LEN(GetFor)-FIND("+",GetFor))



Mình thấy cột A của bạn đều có quy luật 9000 + xxLàm sao để có thể tính tổng của các số phía sau dấu + từ ô A1 - A6 mà không cần phải tính ra từng số ở cột E, vì dữ liệu mình khá nhiều nên làm như thế thì không tiện àh. Nghĩa là đặt công thức tại 1 ô và lấy tổng của các số phía sau dấu + từ A1-A6 luôn ạ
Mình thấy cột A của bạn đều có quy luật 9000 + xx
Vậy để giải quyết nó thì chi cần: =SUM(A1:A6)-9000*COUNT(A1:A6)



Vậy mình nghĩ là viết 1 function rùi dùng function đó thui. Còn công thức 1 phát thì mình chịu.không phải quy luật gì đâu, chỉ là mình kéo thả cho nhanh thôi mà. Có cách nào không
Function test(rg As Range) As Double
Dim cell As Range, arr
For Each cell In rg
arr = Split(cell.Formula, "+")
test = test + arr(UBound(arr))
Next
End Function


Bạn tham khảo:không phải quy luật gì đâu, chỉ là mình kéo thả cho nhanh thôi mà. Có cách nào không
Sub SumAbc()
Dim i As Long, LR As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
With Sheets(1).Range("A5:A100")
.Replace "=*+", ""
End With
Cells(LR + 1, 1).Formula = "=SUM(A5:A" & LR & ")"
End Sub
Vậy mình nghĩ là viết 1 function rùi dùng function đó thui. Còn công thức 1 phát thì mình chịu.
=test(Vùng cần tính tổng)
Mã:Function test(rg As Range) As Double Dim cell As Range, arr For Each cell In rg arr = Split(cell.Formula, "+") test = test + arr(UBound(arr)) Next End Function



Bạn vào vùng soạn thảo VBA (ALt + F11) /Insert Module/Paste code vào thui.Mình còn gà nên chưa biết tạo funtion như thế nào, bạn có thể hướng dẫn mình từng bước được chứ ạ


Công thức của bác hay quá. Bác giải thích giúp một chút được không? Tại sao lại sử dụng getfor vậy?? Em lần đầu biết các dùng này luônBạn xem file đúng ý mình chưa.
Bạn vào vùng soạn thảo VBA (ALt + F11) /Insert Module/Paste code vào thui.
Lưu ý là lưu file xlsm, xls (macro)



Bạn coi file, cái này đơn giản mà.mình cung làm như vậy mà sao ko được ạ, bạn có thể làm vào file mình đã đính kèm giúp mình với , cám ơn bạn nhiều a
Bạn coi file, cái này đơn giản mà.



Đúng rùi, vì nó sử dụng code VBA mà.cám ơn a nhé, nhất định phải lưu đuôi. xlsm mới sử dụng được hả a
Cái GetFor là Name bạn nhé, để biết mặt mũi nó ra sao nhấn Ctrl+F3 sẽ thấy nó như thế nào.Công thức của bác hay quá. Bác giải thích giúp một chút được không? Tại sao lại sử dụng getfor vậy?? Em lần đầu biết các dùng này luôn
Đúng rùi, vì nó sử dụng code VBA mà.



Không hiểu luốn, nếu file của b đã là xlsm rùi và có code trong đó rùi, thì chỉ cần làm theo #24vì file e đang sử dụng cũng đang dùng macro nếu lưu qua đuôi xlsm thì có sử dụng macro dc ko a

Không hiểu luốn, nếu file của b đã là xlsm rùi và có code trong đó rùi, thì chỉ cần làm theo #24



Muốn viết sub để tính 1 phát luôn thì phải lắm đc cấu trúc dữ liệu, bạn muốn thế thì upfie lên(mình thấy có bạn viết code cho bạn về cái đó rùi). Dùng Function có thể tùy biến. Mình update Function theo yêu cấu tính tổng của những ô có công thức +.Mình muốn đặt 1 công thức với cách tìm như thế này có làm được không:
Nếu tìm trong A1:A20 nếu có dấu + thì sẽ cộng tổng của những số phía sau dấu cộng trong các ô có dấu +
Bởi vì dữ liệu mình quá nhiều nên cần nó tự động cập nhật chứ dùng funtion thì bất tiện quá
Function test(rg As Range) As Double
Dim cell As Range, arr
For Each cell In rg
If InStr(cell.Formula, "+") > 0 Then
arr = Split(cell.Formula, "+")
test = test + arr(UBound(arr))
End If
Next
End Function
Muốn viết sub để tính 1 phát luôn thì phải lắm đc cấu trúc dữ liệu, bạn muốn thế thì upfie lên(mình thấy có bạn viết code cho bạn về cái đó rùi). Dùng Function có thể tùy biến. Mình update Function theo yêu cấu tính tổng của những ô có công thức +.
Mã:Function test(rg As Range) As Double Dim cell As Range, arr For Each cell In rg If InStr(cell.Formula, "+") > 0 Then arr = Split(cell.Formula, "+") test = test + arr(UBound(arr)) End If Next End Function
Bạn thử CT này xem:a xem file đính kèm giúp e với nhé, chỉ đặt công thức mà không dùng funtion vì đây là biểu mẫu tổng hợp nên có rất nhiều ô như thế nên dùng funtion rất bất tiện ạ
=SUM((--IFERROR(MID(FORMULATEXT($B$1:$B$20),FIND("+",FORMULATEXT($B$1:$B$20))+1,10),0)+$H$1:$H$20)*($A$1:$A$20=1))
Bạn thử CT này xem:
Ctrl+Shift+EnterMã:=SUM((--IFERROR(MID(FORMULATEXT($B$1:$B$20),FIND("+",FORMULATEXT($B$1:$B$20))+1,10),0)+$H$1:$H$20)*($A$1:$A$20=1))



Với đk nhử yêu cầu thì dùng sub saua xem file đính kèm giúp e với nhé, chỉ đặt công thức mà không dùng funtion vì đây là biểu mẫu tổng hợp nên có rất nhiều ô như thế nên dùng funtion rất bất tiện ạ
Sub test1()
Dim tong As Long, arr, tg As Long
For i = 1 To Range("A1000").End(3).Row
If Cells(i, 1) = 1 Then
tg = 0
If InStr(Cells(i, 2).Formula, "+") > 0 Then
arr = Split(Cells(i, 2).Formula, "+")
tg = arr(UBound(arr))
End If
tong = tong + Cells(i, 8) + tg
End If
Next
Cells(1, 10) = tong
End Sub