Viết đoạn mã cho bảng tính

Liên hệ QC

vanyem

Thành viên mới
Tham gia
23/12/09
Bài viết
1
Được thích
5
Tôi có bảng tính gồm ba cột ABC, cột C bảng AxB. Làm thế nào để khi cột B gặp dòng trống thì cột C lấy giá trị dòng A tương ứng nhân với dòng trên không trống của cột B.
 
Câu hỏi chưa rõ ràng, tiêu đề "cụt lũn", không file đính kèm....
Chắc phải chờ "hơi bị lâu" đó.
 
Tôi có bảng tính gồm ba cột ABC, cột C bảng AxB. Làm thế nào để khi cột B gặp dòng trống thì cột C lấy giá trị dòng A tương ứng nhân với dòng trên không trống của cột B.
nếu làm = cthuc thì thử như vậy
cell C2=IF(COUNTA(B2)<>0,A2*B2,A2*B1) code thi thu coi duoc ko
Sub Macro1()
'
' Macro1 Macro
'
'
Application.ScreenUpdating = False
lr = Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To lr
If Range("B" & i) <> "" Then
Range("C" & i).Value = Range("A" & i) * Range("B" & i)
Else
Range("C" & i).Value = Range("A" & i) * Range("B" & i).Offset(-1, 0)
End If
Next
Application.ScreenUpdating = False

End Sub
 
Lần chỉnh sửa cuối:
Tôi có bảng tính gồm ba cột ABC, cột C bảng AxB. Làm thế nào để khi cột B gặp dòng trống thì cột C lấy giá trị dòng A tương ứng nhân với dòng trên không trống của cột B.
Không trúng cũng xin đừng hỏi lại là tại sao nha.
C2=IF(B2="",B1*A2,0)
 
Tôi có bảng tính gồm ba cột ABC, cột C bảng AxB. Làm thế nào để khi cột B gặp dòng trống thì cột C lấy giá trị dòng A tương ứng nhân với dòng trên không trống của cột B.
Vậy trường hợp cột A rổng thì tính sao?
Tôi đoán đây là bài toán: Lấy cell cuối cùng có dữ liệu ---> Có thể phải dùng LOOKUP
---------------------
- Chờ tác giả mô tả chính xác vấn đề, sẽ sửa lại tiêu đề
- Nếu tác giả.. đi luôn thì ta liệng luôn topic vào sọt rác
Ẹc.. Ẹc...
 
Lần chỉnh sửa cuối:
vanyem đã viết:
Tôi có bảng tính 3 cột A,B,C.
Cột A có dữ liệu, cột B dòng có, dòng không.
Cột C là tích cột A nhân B. Làm sao để viết đoạn code tính tích cho cột C biết rằng khi cột B gặp dong trống thì kết quả là dòng tương ứngcủa cột A nhân với dòng trên nó của cột B. (Ví dụ $B$2=5, B3:B5 bằng không)C2,c3,...C5 bằng A2:A5 nhân $B$2; B6= 6, B7:B10=0 thì C6:C10 bằng A6:A nhân $B$10.
Cảm ơn nhiều!
Chẳng hiểu rõ bạn cần thế nào. Muốn người khác giúp mà chẳng đưa file lên. Bạn tự copy code về xài nha. Đừng nói là không biết đưa code vào file rồi cũng không biết cách Enable Macros nữa nghen.
Code này giả định dữ liệu cột A từ dòng 1 nhá
...........................
Code này chỉ thể hiện giá trị
PHP:
Sub Special_Multiply()
Dim Src(), i As Long, j As Long
Src = Range([A1], [A65536].End(3)).Resize(, 3).Value
For i = 1 To UBound(Src) - 1
   If Src(i, 2) <> "" Then
      If Src(i + 1, 2) = "" Then
         Src(i, 3) = Src(i, 1) * Src(i, 2)
         j = i + 1
         Do
            Src(j, 3) = Src(j, 1) * Src(i, 2)
            j = j + 1
         Loop Until Src(j, 2) <> ""
      End If
   End If
Next
[A1].Resize(i - 1, 3) = Src
End Sub
Code này thể hiện công thức
PHP:
Sub Special_Multiply2()
Dim Src(), i As Long, j As Long
Src = Range([A1], [A65536].End(3)).Resize(, 3).FormulaR1C1
For i = 1 To UBound(Src) - 1
   If Src(i, 2) <> "" Then
      If Src(i + 1, 2) = "" Then
         Src(i, 3) = "=RC[-2] * R" & i & "C[-1]"
         j = i + 1
         Do
            Src(j, 3) = "=RC[-2] * R" & i & "C[-1]"
            j = j + 1
         Loop Until Src(j, 2) <> ""
      End If
   End If
Next
[A1].Resize(i - 1, 3) = Src
End Sub
 
Lần chỉnh sửa cuối:
tại C1:
=A1*LOOKUP(2,1/($B$1:B1<>""),$B$1:B1)
Copy xuống
 
tại C1:
=A1*LOOKUP(2,1/($B$1:B1<>""),$B$1:B1)
Copy xuống

Cũng chưa chắc là đúng đâu, vì chỉ mới lấy giá trị cuối cùng của cột B thôi
Mà cũng có khi =A1*LOOKUP(10^14, $B$1:B1) lại ngon hơn
Mà cũng có khi tác giả lại đòi giá trị cuối cùng của cột A nữa
Tóm lại: "Ổng" không đến thì anh em mình có đoán gì cũng là THẦY BÓI thôi
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Em đoán dạng này là số lượng * đơn giá, đơn giá có thể thay đổi hoặc giữ nguyên trong khoảng thời gian nhất định
Mà thôi, rảnh đoán mò chơi, biết trong trái ỔI có cái gì.
 
Web KT

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

Back
Top Bottom