Không dùng VBA có thể điền công thức một số dòng theo quy luật cho trước không? (1 người xem)

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

trungvdb

Thành viên thường trực
Tham gia
22/8/08
Bài viết
374
Được thích
171
Nghề nghiệp
Tài chính
Bài toán của em là làm sao chỉ những dòng bôi vàng thì cột E mới được tự động điền bằng cột C x cột D. Xin sự trợ giúp của mọi người.

Diencongthuc_zpsa68e6cf6.jpg
 

File đính kèm

Bài toán của em là làm sao chỉ những dòng bôi vàng thì cột E mới được tự động điền bằng cột C x cột D. Xin sự trợ giúp của mọi người.

Diencongthuc_zpsa68e6cf6.jpg
Nếu được chèn thêm 1 dòng trống tại dòng 1 thì bài này đơn giản, chỉ cần sử dụng công thức sau cho E3 và fill xuống là được:
Mã:
=IF(OR(A1="TT",A2="TT"),C3*D3,"")
 
Nếu được chèn thêm 1 dòng trống tại dòng 1 thì bài này đơn giản, chỉ cần sử dụng công thức sau cho E3 và fill xuống là được:
Mã:
=IF(OR(A1="TT",A2="TT"),C3*D3,"")

Anh có thể nói rõ hơn được không? Em cũng đang đoán bài này có thể dùng Advanced Filter gì đó nhưng chi tiết các bước thì chưa nghĩ ra.
 
Anh có thể nói rõ hơn được không? Em cũng đang đoán bài này có thể dùng Advanced Filter gì đó nhưng chi tiết các bước thì chưa nghĩ ra.
Ủa, trong bài #2 tôi nói rõ rồi mà: Chèn thêm 1 dòng trống tại hàng 1 rồi sử dụng công thức (...) cho E3 và fill xuống. Có gì khó hiểu ở câu này nhỉ? Còn với cách dùng Advanced Filter thì tôi cũng chưa nghĩ ra.
 
Ủa, trong bài #2 tôi nói rõ rồi mà: Chèn thêm 1 dòng trống tại hàng 1 rồi sử dụng công thức (...) cho E3 và fill xuống. Có gì khó hiểu ở câu này nhỉ? Còn với cách dùng Advanced Filter thì tôi cũng chưa nghĩ ra.

Cái này là do lỗi của em đưa đầu bài chưa nói rõ hết ý, bởi file thật cần xử lý của em thì các ô tại cột E thuộc các dòng khác dòng bôi vàng đã có công thức rồi (không phải là để trống), mục đích của em là nếu các ô cột E không thuộc các dòng bôi vàng thì phải giữ nguyên hiện trạng (khi fill công thức qua nó bị biến thành trắng). Rất mong anh chỉ dùm cách làm
 
Cái này là do lỗi của em đưa đầu bài chưa nói rõ hết ý, bởi file thật cần xử lý của em thì các ô tại cột E thuộc các dòng khác dòng bôi vàng đã có công thức rồi (không phải là để trống), mục đích của em là nếu các ô cột E không thuộc các dòng bôi vàng thì phải giữ nguyên hiện trạng (khi fill công thức qua nó bị biến thành trắng). Rất mong anh chỉ dùm cách làm

Vậy thì dùng AutoFilter theo màu đi (nếu bạn dùng Excel từ 2007 trở đi)
Filter theo màu vàng xong rồi gõ công thức
 
Bài toán của em là làm sao chỉ những dòng bôi vàng thì cột E mới được tự động điền bằng cột C x cột D. Xin sự trợ giúp của mọi người.

Diencongthuc_zpsa68e6cf6.jpg
Mã:
E2=IF(COUNTIF(A$1:A1,"tt"),IF(ROW()-LOOKUP(2,1/(A$1:A1="tt"),ROW(A$1:A1))<3,C2*D2,""),"")
 
Vậy thì dùng AutoFilter theo màu đi (nếu bạn dùng Excel từ 2007 trở đi)
Filter theo màu vàng xong rồi gõ công thức

Thưa thày, em bôi màu do em tự bôi thủ công 2 dòng mẫu gửi lên diễn đàn để dễ hình dung thôi, vấn đề khó nhất nằm ở vấn đề làm thế nào để bôi màu ah?.
 
Thưa thày, em bôi màu do em tự bôi thủ công 2 dòng mẫu gửi lên diễn đàn để dễ hình dung thôi, vấn đề khó nhất nằm ở vấn đề làm thế nào để bôi màu ah?.

Vậy thì dùng cách khác: Bạn cứ áp dụng cách ở bài 2 nhưng thay vì gõ công thức vào cột E, bạn hãy gõ công thức vào cột F nhé (tạm xem là cột phụ)
Tiếp theo ta AutoFilter cột F theo điều kiện None Blanks. Giờ thì cột E bạn muốn làm gì chả được
----------------------
Mã:
E2=IF(COUNTIF(A$1:A1,"tt"),IF(ROW()-LOOKUP(2,1/(A$1:A1="tt"),ROW(A$1:A1))<3,C2*D2,""),"")
Phải ĐỌC KỸ YÊU CẦU của người ta chứ bạn!
 
Lần chỉnh sửa cuối:
Thưa thày, em bôi màu do em tự bôi thủ công 2 dòng mẫu gửi lên diễn đàn để dễ hình dung thôi, vấn đề khó nhất nằm ở vấn đề làm thế nào để bôi màu ah?.
Conditional Formatting để tô màu bằng công thức như bài #2 của nghiaphuc.
Chuyện filter theo màu và Công thức trong cột E là của bạn.
 

File đính kèm

Vậy thì dùng cách khác: Bạn cứ áp dụng cách ở bài 2 nhưng thay vì gõ công thức vào cột E, bạn hãy gõ công thức vào cột F nhé (tạm xem là cột phụ)
Tiếp theo ta AutoFilter cột F theo điều kiện None Blanks. Giờ thì cột E bạn muốn làm gì chả được
----------------------

Phải ĐỌC KỸ YÊU CẦU của người ta chứ bạn!

Cảm ơn thày và các anh, chị.
Thưa thày, thực ra trước kia em học tập được ở thày và mọi người trên diễn đàn, những bài tương tự như thế này em tự làm được rất nhanh chóng.

Nhưng do mấy năm nay kinh tế khó khăn quá, cơ quan nợ lương, tối ngày em phải đi làm thêm việc khác, không có thời gian ôn luyện kỹ nên hiện tại các công thức phức tạp, VBA không nhớ được là mấy, thành ra cứ loay hoay mãi.

Nếu có thể được em xin mạn phép nhờ mọi người giúp em 1 giải pháp về VBA (để em vừa có thêm giải pháp, vừa ôn lại ah).
 
Nếu có thể được em xin mạn phép nhờ mọi người giúp em 1 giải pháp về VBA (để em vừa có thêm giải pháp, vừa ôn lại ah).

Code ngắn gọn thôi:
Mã:
Sub Test()
  Dim rng As Range
  On Error Resume Next
  Set rng = Sheet1.Range(Sheet1.[D2], Sheet1.[D60000].End(xlUp)).Offset(, 1).SpecialCells(4)
  If Not rng Is Nothing Then rng.Value = "=RC[-2]*RC[-1]"
End Sub
Chưa biết dữ liệu thật thế nào nên làm đại (có thể sai)
 
Lần chỉnh sửa cuối:
Thêm 1 code viết theo yêu cầu của bài này:
Cái này là do lỗi của em đưa đầu bài chưa nói rõ hết ý, bởi file thật cần xử lý của em thì các ô tại cột E thuộc các dòng khác dòng bôi vàng đã có công thức rồi (không phải là để trống), mục đích của em là nếu các ô cột E không thuộc các dòng bôi vàng thì phải giữ nguyên hiện trạng (khi fill công thức qua nó bị biến thành trắng). Rất mong anh chỉ dùm cách làm
PHP:
Public Sub GPE()
Dim rng As Range, Cll As Range
Set rng = Range([A2], [A65536].End(xlUp))
For Each Cll In rng
    If UCase(Cll) = "TT" Then
        Cll.Offset(1, 4).Resize(2) = "=RC[-2]*RC[-1]"
        Cll.Offset(1).Resize(2, 5).Interior.ColorIndex = 6 '"Không muốn tô màu thì xoá dòng này"'
    End If
Next Cll
Set rng = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Code ngắn gọn thôi:
Mã:
Sub Test()
  Dim rng As Range
  On Error Resume Next
  Set rng = Sheet1.Range(Sheet1.[D2], Sheet1.[D60000].End(xlUp)).Offset(, 1).SpecialCells(4)
  If Not rng Is Nothing Then rng.Value = "=RC[-2]*RC[-1]"
End Sub
Chưa biết dữ liệu thật thế nào nên làm đại (có thể sai)

Ý em là chỉ công việc nào có mã công việc (ở cột A) là TT thì 2 dòng tiếp theo [2 dòng được minh họa bằng bôi màu vàng] mới bị tác động bởi Code thôi.
Em xin minh họa như sau ở ví dụ trên, sau khi chạy Code thì nó chỉ tính lại các ô E6, E7, E16, E17. Các ô E3, E4, E5...trước như thế nào nay vẫn vậy không bị Code tác động đến.
 
Ý em là chỉ công việc nào có mã công việc (ở cột A) là TT thì 2 dòng tiếp theo [2 dòng được minh họa bằng bôi màu vàng] mới bị tác động bởi Code thôi.
Em xin minh họa như sau ở ví dụ trên, sau khi chạy Code thì nó chỉ tính lại các ô E6, E7, E16, E17. Các ô E3, E4, E5...trước như thế nào nay vẫn vậy không bị Code tác động đến.

Mã:
Sub diencongthuc()
Set c = ActiveSheet.Cells.Find("TT", lookat:=xlWhole)
If Not c Is Nothing Then
fa = c.Address
Do
For i = 1 To 2
c.Offset(i, 4).Formula = "=" & c.Offset(i, 2).Address & "*" & c.Offset(i, 3).Address
c.Offset(i).EntireRow.Interior.ColorIndex = 6
Next
Set c = ActiveSheet.Cells.FindNext(c)
Loop While c.Address <> fa
End If
End Sub
OK ???
 

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

Back
Top Bottom