Giúp mình tìm số là tổng các số (1 người xem)

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

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

thaivu

Thành viên mới
Tham gia
29/5/07
Bài viết
36
Được thích
1
Ý tưởng là có 2 cột với các con số
Có cách nào tìm 1 số bên cột 2 là tổng của vài số bên cột 1.
Các bác giúp em viết hàm này với
Em cảm ơn các bác nhiều, làm báo cáo kiểu này khổ quá các bác ạ. Ít thì còn mò được chứ nhiều quá đành chịu.

Các bác cố giúp em viết hàm nhé.!$@!!
 
Về nguyên tắc thì chắc chắn là có cách nhưng tuỳ vào bài cụ thể mới làm chính xác đc. Bạn có thể cho biết files dc không?
 
Em gửi file lên đây ạ

Các bác giúp em với nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Có một cách dùng công cụ của Excel để theo dõi một cell nào đó được liên kết với các cell khác như thế nào:
- Chọn vùng cần theo dõi công thức.
- Vào menu Tool/Formula Auditing/Show Watch windows.
Xuất hiện hộp thoại Watch windows: Trong đó nhấn chuột vào Add watch. (có thể chọn lại vùng cần theo dõi ở bước này)
Excel sẽ add vào các ô dã chọn các thông tin như Book; Sheet; Cell; Value; Formula. Trong đó ở cột Formula hiển thị công thức của ô tương ứng, qua đó sẽ biết được cell đang xem xét được liên kết với các địa chỉ nào!
 
anhtuan1066 đã viết:
Câu này tôi nhớ ko lầm có người đã từng hỏi: Cột C là tổng của cột A và B... người ta yêu cầu rằng từ kết quả cột C, hảy xem nó là tổng của em nào trong cột A và B... cái này chắc bó bột luôn.. vì rất ư vô lý

Ý em cũng vậy đó bác ạ, nhưng ko tách làm cột A và B, tất cả số hạng trong một cột thôi ạ
cột chứa các số có khả năng là tổng là cột 2.

Giờ làm sao để nó quét các số cột 2 xem có số nào là tổng của một vài em bên cột 1.

Em đang làm báo cáo, dính vụ này mệt đứt hơi.
Phần mềm nhà em nó lủng củng, làm báo cáo hơi mệt, cột trong báo cáo thì là tổng nhưng giờ phải đối chiếu với dữ liệu là các số hạng nên dò dẫm cả tuần mà vẫn chưa xong mấy số hạng
 
Tôi lấy 1 ví dụ nhé:
Cột A, từ A1 đến A100 ta điền số từ 1 đến 100
Cột B, ta cũng có các số (nhỏ hơn 100)... ví dụ là số 50 nha... vậy số 50 này có thể là kết quả của phép công 1 và 49, nhưng cũng có thể là kết quả của 2 và 48... vân vân và vân vân... Ko trời nào biết dc
Bạn nghĩ xem điều mà bạn yêu cầu có quá hoang tưởng ko? Rất ko phù hợp với Logic
Bây giờ trờ lại vấn đề: Cho tôi hỏi bạn muốn thế là đễ làm gì? Bạn nên nói rõ công việc đang làm và điều bạn đang gặp khó khăn, có khi mọi người sẽ tìm ra hướng khác cho bạn... Chứ như yêu cầu trên thì... Bó bột!
Còn như cột báo cáo ko phải là số mà là 1 công thức thì hoàn toàn có thể tìm dc đấy... Bạn thử đưa dử liệu giã lập lên xem (1 ít thôi cũng dc)
Mến
ANH TUẤN
 
anhtuan1066 đã viết:
Tôi lấy 1 ví dụ nhé:
Cột A, từ A1 đến A100 ta điền số từ 1 đến 100
Cột B, ta cũng có các số (nhỏ hơn 100)... ví dụ là số 50 nha... vậy số 50 này có thể là kết quả của phép công 1 và 49, nhưng cũng có thể là kết quả của 2 và 48... vân vân và vân vân... Ko trời nào biết dc
Bạn nghĩ xem điều mà bạn yêu cầu có quá hoang tưởng ko? Rất ko phù hợp với Logic
Bây giờ trờ lại vấn đề: Cho tôi hỏi bạn muốn thế là đễ làm gì? Bạn nên nói rõ công việc đang làm và điều bạn đang gặp khó khăn, có khi mọi người sẽ tìm ra hướng khác cho bạn... Chứ như yêu cầu trên thì... Bó bột!
Còn như cột báo cáo ko phải là số mà là 1 công thức thì hoàn toàn có thể tìm dc đấy... Bạn thử đưa dử liệu giã lập lên xem (1 ít thôi cũng dc)
Mến
ANH TUẤN
Đúng là nếu theo ví dụ của bạn thì hơi chuối thật
Nhưng như báo cáo của mình thì không nhiều, thường 1 số ở cột A sẽ bằng 1 số ở cột B, tuy nhiên có một vài công trình kế toán tách làm 2 khoản, việc tìm kiếm sẽ rất vất vả.
Do vậy các bạn viết giúp mình một hàm có đặc tính như sau (đơn giản bớt)
Thêm một cột ngay bên phải cột B,
Kết quả từng dòng cột này đúng bằng cột B nhưng ở dạng công thức
Được tính bằng tổng của 2 số hạng cột A nếu như ko bằng 1 kết quả cột A.
Mong rằng đây là bài toán hay giúp mọi người tăng kiến thức.
 
anhtuan1066 đã viết:
Tôi lấy 1 ví dụ nhé:
Cột A, từ A1 đến A100 ta điền số từ 1 đến 100
Cột B, ta cũng có các số (nhỏ hơn 100)... ví dụ là số 50 nha... vậy số 50 này có thể là kết quả của phép công 1 và 49, nhưng cũng có thể là kết quả của 2 và 48... vân vân và vân vân... Ko trời nào biết dc
Bạn nghĩ xem điều mà bạn yêu cầu có quá hoang tưởng ko? Rất ko phù hợp với Logic
Bây giờ trờ lại vấn đề: Cho tôi hỏi bạn muốn thế là đễ làm gì? Bạn nên nói rõ công việc đang làm và điều bạn đang gặp khó khăn, có khi mọi người sẽ tìm ra hướng khác cho bạn... Chứ như yêu cầu trên thì... Bó bột!
Còn như cột báo cáo ko phải là số mà là 1 công thức thì hoàn toàn có thể tìm dc đấy... Bạn thử đưa dử liệu giã lập lên xem (1 ít thôi cũng dc)
Mến
ANH TUẤN
Đúng là theo ví dụ của bạn thì cũng mệt thật,
Nhưng như công việc của mình thì đôi khi trên báo cáo hiện tổng nhưng trên sổ cái hiện từng khoản nhỏ.
Việc đối chiếu đòi hỏi công việc phải như thế chứ có ai mong muôn đâu!$@!!
Để đơn giản hơn các bác giúp em cái hàm có đặc tính sau nhé:
Mở bên cạnh cột B (cột tổng) một cột nữa gọi là cột C
Cột C này về giá trị là bằng cột B nhưng ở dạng công thức
Số nào bằng 1 số bên cột A thì nó bằng số bên cột A
Số nào ko tìm đc bên cột A nó sẽ bằng tổng 2 số bên cột A
Các bác giúp em vụ này, cũng mong rằng bài toán trên sẽ giúp mọi người cùng nâng cao kiến thức về excel.
 
Bạn thử xem file này có đúng ý bạn ko?
Mến
ANH TUẤN
 

File đính kèm

Bác hiểu nhầm ý em rồi ạ.
Ý em là
-nếu số cột B bằng 1 số cột A thì cột C ghi công thức : =địa chỉ số ở cột A
-nếu số cột B không bằng 1 số ở cột A thì cột C ghi công thức: = địa chỉ số thứ 1 ở cột A + địa chỉ số thứ 2 ở cột A
-nếu không có kết quả thì ghi error
Tức là phải dùng hàm visual chứ không phải hàm excel ạ, hàm bác viết em thấy cột B chỉ 92, cột C lại chỉ 63.
 
thaivu đã viết:
Các bác giúp em với nhé

Bạn xem nhé :

PHP:
Function TimTong(So As Long, MangSo As Range) As String
    On Error Resume Next
    Application.Volatile (False)
    Dim i1 As Long, i2 As Long
    If MangSo.Rows.Count < 1 Then Exit Function
    If MangSo.Columns.Count <> 1 Then Exit Function
        For i1 = 1 To MangSo.Rows.Count - 1
            If MangSo(i1) < So Then
              For i2 = i1 + 1 To MangSo.Rows.Count
                If MangSo(i2) = So - MangSo(i1) Then
                    TimTong = IIf(TimTong = "", "", TimTong & "; ") & _
                        "(" & Format(MangSo(i1), "#,##0") & "+" & Format(MangSo(i2), "#,##0") & ")"
        Exit For: End If: Next: End If: Next
    Set MangSo = Nothing
End Function

Thân!
 

File đính kèm

Muốn tìm theo địa chỉ thì dùng hàm ADDRESS thôi.. có điều chưa hiểu lắm...
Giờ như vầy: theo dử liệu tôi post lên, bạn thử làm bằng tay xem thử... Tôi nhìn vào có khi mới đoán dc
 
Mr Okebab đã viết:
Bạn xem nhé :

PHP:
Function TimTong(So As Long, MangSo As Range) As String
On Error Resume Next
Application.Volatile (False)
Dim i1 As Long, i2 As Long
If MangSo.Rows.Count < 1 Then Exit Function
If MangSo.Columns.Count <> 1 Then Exit Function
For i1 = 1 To MangSo.Rows.Count - 1
If MangSo(i1) < So Then
For i2 = i1 + 1 To MangSo.Rows.Count
If MangSo(i2) = So - MangSo(i1) Then
TimTong = IIf(TimTong = "", "", TimTong & "; ") & _
"(" & Format(MangSo(i1), "#,##0") & "+" & Format(MangSo(i2), "#,##0") & ")"
Exit For: End If: Next: End If: Next
Set MangSo = Nothing
End Function

Thân!
Hàm của bác đúng hàm em cần tìm rồi ạ, đa tạ bác nhiều nhiều.
Tuy vậy để thuận tiện hơn bác có cách nào khi click ô Kết quả nó tạo một cái gì đó kiểu như liên kết để em biết là tổng các ô nào không ạ.
Với cả (em hơi tham) bác xem hộ có thể tăng lên 3 số hạng, 4 số hạng ... được không ạ.
 
thaivu đã viết:
Ý em cũng vậy đó bác ạ, nhưng ko tách làm cột A và B, tất cả số hạng trong một cột thôi ạ
cột chứa các số có khả năng là tổng là cột 2.

Giờ làm sao để nó quét các số cột 2 xem có số nào là tổng của một vài em bên cột 1.

Em đang làm báo cáo, dính vụ này mệt đứt hơi.
Phần mềm nhà em nó lủng củng, làm báo cáo hơi mệt, cột trong báo cáo thì là tổng nhưng giờ phải đối chiếu với dữ liệu là các số hạng nên dò dẫm cả tuần mà vẫn chưa xong mấy số hạng

Oh, bạn làm gì với ứng dụng dạng này vậy tôi thấy lạ quá, vấn đề ko quá kho để làm nhưng tui muốn biết là ứng dụng gì cho thông đã (k nó tức anh ách thế nào đó), mới làm tốt được hic hic
.
 
tigertiger đã viết:
Oh, bạn làm gì với ứng dụng dạng này vậy tôi thấy lạ quá, vấn đề ko quá kho để làm nhưng tui muốn biết là ứng dụng gì cho thông đã (k nó tức anh ách thế nào đó), mới làm tốt được hic hic
.
Đại khái như bài thách đố tháng 12 ấy bác. Thậm chí còn không biết trước mấy số hạng.
Cụ thể trong trường hợp bạn này có thể do nhập liệu sai sót trong khi điền mã, nó nhảy lung tung rồi phải đi bắt lại cho khớp. Chứ nếu trong phần mềm mà làm đúng quy trình tạo mã và điền mã, phần mềm sẽ lọc theo mã đâu có phải khổ. Nói cho bác thông cảm với dân KT tí. Ngày xưa khi Công ty mình mua 1 phần mềm, mình phải soạn hẳn 1 bản quy định về sử dụng mã như thế nào, treo trước mỗi bàn cho mọi nhân viên. Ngoài ra còn phân quyền cho chỉ 1 vài người có quyền tạo mã mới nữa ấy chứ. Mấy người này có 1 bản hướng dẫn riêng. Vậy mà vẫn sai sót, trùng mã, lộn mã lung tung.
Còn trường hợp như bài thách đố, mình yêu cầu KH hoặc ghi luôn vào hợp đồng cho KH, trả tiền dứt từng tờ hóa đơn và ghi rõ số hđ vào Uỷ nhiệm chi. Nói nhỏ Bác nghe, điều cơ bản của KT khi sử dụng phần mềm kể cả Excel, điều đầu tiên là mã, mã và mã. mã Tài khoản, mã Khách hàng, mã chi phí, . . .Không có mã như bài ở topic bên kia chỉ khổ cho mấy bác cao thủ, giúp mãi giúp hoài không biết khi nào mới hết yêu cầu.
 
-Theo mình, bài toán này phải được xác định số hạng. Vì nếu không, số hạng trở nên vô hạn. Ta không thể viết một chương trình như thế.
-Trước khi các bạn có giải pháp tối ưu, mình thử dùng các vòng lặp để dò tìm kiểu như dò tìm pass. Cách này chỉ dùng với dữ liệu có số dòng ít.
 

File đính kèm

Em xin trình bày cụ thể vấn đề để các bác hiểu và giúp em như bác Tuấn và bác Okebab
Em đang làm báo cáo quý XDCB, hiển thị trên báo cáo là theo mã công trình
Em phải đối chiếu nó từng dòng tổng đó với các nghiệp vụ liên quan tới 2411 và 2412
Nhưng từng nghiệp vụ lại chẳng nhập theo từng công trình (phần mềm nó thế biết làm thế nào được, kiến nghị thì bảo trc mọi người vẫn làm đc sao cháu ko làm đc)
Quá trình truyền số liệu từ BQL và văn phòng sang công ty thì hay gặp kiểu truyền nửa chừng thì gặp trục trặc và chẳng biết truyền được cái nào rồi :(
Chính vì thế em mới phải làm cái việc nhờ các bác giúp chứ hix hix.
Em cám ơn bác Tuấn và bác Okebab rất nhiều, em vẫn đang tiếp tục mày mò để hàm tìm số tổng cho không chỉ 2 mà 3,4,5 số hạng.
Có cách nào mà khi clik vào ô kết quả nó bôi vàng luôn các ô số hạng ko các bác nhỉ.
 
voda đã viết:
-Theo mình, bài toán này phải được xác định số hạng. Vì nếu không, số hạng trở nên vô hạn. Ta không thể viết một chương trình như thế.
-Trước khi các bạn có giải pháp tối ưu, mình thử dùng các vòng lặp để dò tìm kiểu như dò tìm pass. Cách này chỉ dùng với dữ liệu có số dòng ít.
Mình đã xem file của Voda, tuy nhiên khi click thì nó báo lỗi vào hiển thị thông báo
Can't excute code in break mod.
Mình cũng không hiểu tại sao.
Mình nghĩ chắc chắn phải giới hạn số hạng, đúng là nếu không thì máy treo là cái chắc.
Để thống nhất chúng ta giới hạn số số hạng là từ 1 => 5 nhé

Và cột kết quả theo mình nên như thế này:
Cùng dòng đó nếu có 1 số tổng là tổng của các số hạng thì sẽ ở các cột liên tiếp và ở dạng công thức: = địa chỉ số hạng 1 + địa chỉ số hạng 2 + ...
Như vậy khi click vào ô đó ta biết nó là tổng của những số nào trong cột A và biết địa chỉ các số hạng.
Còn nếu các nghĩ ra cách khi click vào ô kết quả nó bôi vàng các số hạng thì còn tuyệt nữa.
Nhờ các bác em học được rất nhiều, các bác tiếp tục giúp đỡ em nhé
 
Bạn tải lại file này nhé
 

File đính kèm

anhtuan1066 đã viết:
Bạn xem yêu cầu của bạn có gần giống với topic này ko?
http://www.giaiphapexcel.com/forum/showthread.php?t=6883
Nếu đúng là thế thì bạn may mắn rồi... chắc chắn sẽ có 1 giãi pháp hoàn hảo nhất cho bạn!.. nhưng từ từ nhé!
ANH TUẤN
Đúng là về phương pháp có thể áp dụng dạng như bài toán này bác Tuấn ạ
Tuy nhiên em thấy hàm excel bất tiện lắm, dùng hàm VBA thoải mái hơn chứ ạ
 
thaivu đã viết:
Em xin trình bày cụ thể vấn đề để các bác hiểu và giúp em như bác Tuấn và bác Okebab
Em đang làm báo cáo quý XDCB, hiển thị trên báo cáo là theo mã công trình
Em phải đối chiếu nó từng dòng tổng đó với các nghiệp vụ liên quan tới 2411 và 2412
Nhưng từng nghiệp vụ lại chẳng nhập theo từng công trình (phần mềm nó thế biết làm thế nào được, kiến nghị thì bảo trc mọi người vẫn làm đc sao cháu ko làm đc)
Quá trình truyền số liệu từ BQL và văn phòng sang công ty thì hay gặp kiểu truyền nửa chừng thì gặp trục trặc và chẳng biết truyền được cái nào rồi :(
Chính vì thế em mới phải làm cái việc nhờ các bác giúp chứ hix hix.
Em cám ơn bác Tuấn và bác Okebab rất nhiều, em vẫn đang tiếp tục mày mò để hàm tìm số tổng cho không chỉ 2 mà 3,4,5 số hạng.
Có cách nào mà khi clik vào ô kết quả nó bôi vàng luôn các ô số hạng ko các bác nhỉ.

Cái này thì có lẽ dùng For next dễ hơn.

Tuy nhiên do không có thời gian nên mình chưa cô gọn nó lại. Bác nào thích thì giúp em nhé

Mới chỉ tối đa là 5 số hạng thôi

Thân!
 

File đính kèm

Đây là hàm của bác Voda em đã sửa lại chút
PHP:
Sub timtong2so()
Dim i As Integer, j As Integer, k As Integer, ii As Integer, t As Long
Range("E2:IV22").ClearContents
For i = 2 To Cells(1, 16)
  For j = i + 1 To Cells(1, 16)
     For k = 2 To Cells(1, 18)
         t = Cells(i, 1) + Cells(j, 1)
         If t = Cells(k, 3) Then
            ii = Cells(k, Columns.Count).End(xlToLeft).Column + 1
                Cells(k, ii) = "=A" & i & " + A" & j
         End If
   Next
  Next
Next
End Sub
Sub timtong3so()
Dim i As Integer, j As Integer, m As Integer, k As Integer, ii As Integer, t As Long
Range("E2:IV22").ClearContents
For i = 2 To Cells(1, 16)
  For j = i + 1 To Cells(1, 16)
    For m = j + 1 To Cells(1, 16)
        For k = 2 To Cells(1, 18)
            t = Cells(i, 1) + Cells(j, 1) + Cells(m, 1)
            If t = Cells(k, 3) Then
               ii = Cells(k, Columns.Count).End(xlToLeft).Column + 1
                   Cells(k, ii) = "=A" & i & " + A" & j & " + A" & m
            End If
        Next
     Next
  Next
Next
End Sub

Tuy vậy hàm của bác có nhược điểm là phải xác định cho i và k chạy từ đâu tới đâu.
Điều này có nghĩa là khi ta có một cột dữ liệu mới lại phải vào editor sửa lại
Để khắc phục em nghĩ nên thêm 2 ô để nhập số max của i ,j và k
Từ đó em phát triển thêm cái hàm tìm tổng của 3 số, nếu 4 số và 5 số tương tự em ko gửi lên nữa.
Cảm ơn các bác thật nhiều, em vui quá
À quên có bác nào nghĩ ra cách click vào ô kết quả nó bôi vàng luôn mấy cái ô số hạng không ạ. Như excel bây giờ cũng bôi nhưng chưa rõ lắm.
 

File đính kèm

Mr Okebab đã viết:
Cái này thì có lẽ dùng For next dễ hơn.

Tuy nhiên do không có thời gian nên mình chưa cô gọn nó lại. Bác nào thích thì giúp em nhé

Mới chỉ tối đa là 5 số hạng thôi

Thân!
Bác Okebab viết nhanh thật, giờ công việc của em ngon hơn phần nào rồi.
có lẽ cũng chỉ dừng lại ở 5 số thôi các bác ạ.
Thấy các bác mỗi người viết theo một cách, cách nào cũng hay cả.
Em đưa file em chỉnh lại chút, các bác góp ý cho em nhé
 
Báo cáo các bác em đã hoàn thành công trình auto luôn cái khoản xác nhận số lượng số hạng cũng như số lượng số tổng
Các bác xem thử nhé
 

File đính kèm

thaivu đã viết:
Báo cáo các bác em đã hoàn thành công trình auto luôn cái khoản xác nhận số lượng số hạng cũng như số lượng số tổng
Các bác xem thử nhé

Góp ý chút xíu về giải thuật thôi :
VD như tìm tổng 5 số :
Vì các số >0 nên :
- Tìm số thứ nhất : Nếu số đó < Số cần tính -->>Xét tiếp
-> Tìm số thứ hai : Nếu số thứ nhất + thứ hai < Số cần tính -->>Xét tiếp
. . . . . .

Như vậy Code của bạn chạy rất nhanh.
Còn như của bạn, nó sẽ chạy hết cả 5 vòng For đó thì . . . hơi lâu.

Thân!
 
oh, bài toán này rất hay -> nhưng nếu chỉ dừng 5 số hạng thì làm như OB là được rồi,

nhưng tổng quát hóa là tìm tất cả các trường hợp (1,2,...) số thì ta phải dùng giải thuật Vét cạn mới giải được và tối ưu,

Và tôi nghĩ đây là bài tập lập trình của Tin học đây,
.
.

thaivu đã viết:
Báo cáo các bác em đã hoàn thành công trình auto luôn cái khoản xác nhận số lượng số hạng cũng như số lượng số tổng
Các bác xem thử nhé

như OB nói bạn cần cải thiện thuật toán, và với tổng 5 số kết quả sai bạn ơi? bạn ktra lại nhé
.
.
http://www.giaiphapexcel.com/forum/member.php?u=440
 
Mr Okebab đã viết:
Góp ý chút xíu về giải thuật thôi :
VD như tìm tổng 5 số :
Vì các số >0 nên :
- Tìm số thứ nhất : Nếu số đó < Số cần tính -->>Xét tiếp
-> Tìm số thứ hai : Nếu số thứ nhất + thứ hai < Số cần tính -->>Xét tiếp
. . . . . .

Như vậy Code của bạn chạy rất nhanh.
Còn như của bạn, nó sẽ chạy hết cả 5 vòng For đó thì . . . hơi lâu.

Thân!
Cám ơn bác, quả thực em chạy 5 số hạng thấy hơi sốt ruột thật. Với lại em có chỉnh lại một chút rồi vì hàm cũ sử dụng biến t as long chỉ được số tổng là tỷ, không phù hợp với thực tế.
Em mới chỉ viết được tổng 2 số theo cách bác bảo, bác xem có sai ở đâu không hộ em nhé
PHP:
Sub timtong2so()
Dim i As Integer, j As Integer, k As Integer, ii As Integer
Range("E2:IV60").ClearContents
For k = 2 To Cells(Rows.Count, 3).End(xlUp).Row
    If Cells(k, 3) <> 0 Then
                For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
                    If Cells(i, 1) < Cells(k, 3) And Cells(i, 1) <> 0 Then
                        For j = i + 1 To Cells(Rows.Count, 1).End(xlUp).Row
                            If Cells(k, 3) = Cells(i, 1) + Cells(j, 1) Then
                               ii = Cells(k, Columns.Count).End(xlToLeft).Column + 1
                                   Cells(k, ii) = "=A" & i & " + A" & j
                            End If
                        Next
                    End If
                Next
    End If
Next
End Sub
 
Lần chỉnh sửa cuối:
Em viết thêm được hàm tổng 3,4,5 số rồi, tốc độ nhanh hơn hẳn các bác ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Nguyên văn bởi thaivu
Em viết thêm được hàm tổng 3,4,5 số rồi, tốc độ nhanh hơn hẳn các bác ạ.
Thuật toán này chưa phải là tối ưu. Nhưng bước đầu là bạn đã thành công. Có góp ý nhỏ:
-Nên gán Cells(Rows.Count, 1).End(xlUp).Row vào một biến để code gọn hơn. Vidụ:
t = Cells(Rows.Count, 1).End(xlUp).Row
Range("E2:IV" & t).ClearContents
...
 
Vầng cái đó em sẽ sửa ngay.
Tiện thể các bác cho em hỏi, trong VBA có cách nào khi click vào 1 cell kết quả nó sẽ bôi vàng các ô số hạng không ạ
chứ như em bây giờ phải click vào xem công thức nó mới bôi theo kiểu excel vẫn khó nhìn
 
Lần chỉnh sửa cuối:
Bạn muốn click vào ô trong cột A hay trong cột C. Các ô nào sẽ bôi vàng?Bạn cho một ví dụ để dễ hình dung hơn.
 
voda đã viết:
Bạn muốn click vào ô trong cột A hay trong cột C. Các ô nào sẽ bôi vàng?Bạn cho một ví dụ để dễ hình dung hơn.

Ý là : C10 = A1 + A2 + A15 + A17 . . .

Khi Click vào đó thì các ô trong công thức đó sẽ biến thành màu vàng.

Tiện thể các bác cho em hỏi, trong VBA có cách nào khi click vào 1 cell kết quả nó sẽ bôi vàng các ô kết quả không ạ
chứ như em bây giờ phải click vào xem công thức nó mới bôi theo kiểu excel vẫn khó nhìn

Cái này cũng không khó, nhưng hơi cực.
Giải thuật như sau :
  1. Click vào 1 ô
  2. Trả lại màu nguyên thủy cho các ô trong tham chiếu của ô được kịch hoạt trước đó (Dựa vào ô cố định ở bước 4)
  3. Lấy ra được địa chỉ của các ô tham chiếu trong công thức ô hiện hành
  4. Ghi ra một Cell cố định các địa chỉ này
  5. Tiến hành tô vàng cho các ô tham chiếu đó
Mệt nhỉ.

Thân!
 
Đúng đó các bác ạ.
Em mò cái lệnh bôi vàng và xóa từ trưa tới giờ chưa đc.
 
Em đã viết xong hàm đánh dấu các số hạng.
Chân thành cảm ơn các bác đã giúp em rất nhiều
PHP:
Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim i As Integer, j As Integer, k As Integer, rowmax As Integer, colmax As Integer, sohang As Variant
rowmax = Cells(Rows.Count, 5).End(xlUp).Row For i = 3 To rowmax
colmax = Cells(i, Columns.Count).End(xlToLeft).Column
    For j = 5 To colmax
        If Cells(i, j) <> 0 Then
            If Not Intersect(Target, Cells(i, j)) Is Nothing Then
                Range("A3:A100").Interior.ColorIndex = 0
                Range("C3:C100").Interior.ColorIndex = 0
                Range("E3:CV100").Interior.ColorIndex = 0
                
                'Cells(i, 3).Interior.ColorIndex = 34
                Cells(i, j).Interior.ColorIndex = 34 ' light blue
                    
                If InStr(1, Cells(i, j), " + ") > 0 Then
                    sohang = Split(Cells(i, j), " + ")
                        For k = 0 To UBound(sohang)
                            Range(sohang(k)).Interior.ColorIndex = 34 ' light blue
                        Next
                Else
                    Range(Cells(i, j)).Interior.ColorIndex = 34 ' light blue
                End If
            End If
        End If
    Next
Next
End Sub
 
Hình như đoạn code trên thiếu chữ formula:
If InStr(1, Cells(i, j).Formula, " + ") > 0 Then
sohang = Split(Cells(i, j).Formula, " + ")
Bạn xem lại thử đúng không?
 
thaivu đã viết:
Em đã viết xong hàm đánh dấu các số hạng.
Chân thành cảm ơn các bác đã giúp em rất nhiều
PHP:
Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim i As Integer, j As Integer, k As Integer, rowmax As Integer, colmax As Integer, sohang As Variant
rowmax = Cells(Rows.Count, 5).End(xlUp).Row For i = 3 To rowmax
colmax = Cells(i, Columns.Count).End(xlToLeft).Column
    For j = 5 To colmax
        If Cells(i, j) <> 0 Then
            If Not Intersect(Target, Cells(i, j)) Is Nothing Then
                Range("A3:A100").Interior.ColorIndex = 0
                Range("C3:C100").Interior.ColorIndex = 0
                Range("E3:CV100").Interior.ColorIndex = 0
                
                'Cells(i, 3).Interior.ColorIndex = 34
                Cells(i, j).Interior.ColorIndex = 34 ' light blue
                    
                If InStr(1, Cells(i, j), " + ") > 0 Then
                    sohang = Split(Cells(i, j), " + ")
                        For k = 0 To UBound(sohang)
                            Range(sohang(k)).Interior.ColorIndex = 34 ' light blue
                        Next
                Else
                    Range(Cells(i, j)).Interior.ColorIndex = 34 ' light blue
                End If
            End If
        End If
    Next
Next
End Sub

Đừng gửi 1 cái code dài như vậy, phải gửi kèm File thì mới test giúp bạn được. Vì File vừa có Code, vừa có dữ liệu để thử.
Chứ tớ đọc một hồi cũng hoa cả mắt. Vì thế chẳng có ý kiến gì được cả.

Thân!
 
voda đã viết:
Hình như đoạn code trên thiếu chữ formula:

Bạn xem lại thử đúng không?
Dạ, hôm đó em tìm mãi chẳng biết làm thế nào ra được cái fomular thế là em chuyển cái kết quả thành text./-*+/

Mr Okebab đã viết:
Đừng gửi 1 cái code dài như vậy, phải gửi kèm File thì mới test giúp bạn được. Vì File vừa có Code, vừa có dữ liệu để thử.
Chứ tớ đọc một hồi cũng hoa cả mắt. Vì thế chẳng có ý kiến gì được cả.

Thân!
Dạ, em gửi luôn đây ạ. Em sợ gửi nhiều quá-+*/
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
VODA ơi! Lỗi mất rồi. Mình click vào CLICK báo lỗi mất rồi. Có ai biết làm addin cho cái vụ này không nhỉ. Cái này dân kế toán tìm số chênh lệnh thì quá tuyệt luôn.
 
Tìm tổng của một số cho trước

Chào cả nhà.
Dân kế toán chúng tôi rất cần cái tìm tổng của một số cho trước (theo file đính kèm) khi làm báo cáo.
Ví dụ: chênh lệch một số nào đấy, không biết từ đâu tìm rất mất thời gian. Hôm rồi lang thang trên GPE gặp được Mr Okebab, voda, Anhtuan1066, thaivu... đang bàn về vấn đề này. Mình tải file về xem và có chút đề nghị nhờ mọi người giúp đỡ. xem file đính kèm.
Xin cám ơn PGE, cám ơn mọi người!

Thân!
 

File đính kèm

Lần chỉnh sửa cuối:

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

Back
Top Bottom