Đổi công thức bằng VBA

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

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
113
Chào cả nhà.

Mình muốn thay toàn bộ công thức trong file sau bằng marco hoặc viết code để làm việc đó.

Thân chào.
 
Lần chỉnh sửa cuối:
He He quá trời người tải luôn nhưng chưa có câu trả lời.
Ngồi tìm tòi học hỏi 1 lát thì mượn code cuả Bác Trần Xuân Thiện thêm mắm muối 1 chút thì được rùi. Nhưng có vài vấn đề cẩn được giải đáp như sau:
1/ Tại sao chỉ cần chạy code TrichNgang là được còn CungCTu & XoaDong thì chẳng đụng gì đến cả?.
2/ Nếu muốn tìm dòng cuối cùng trong cột số tiền để đặt hàm sum thì dùng đoạn code nào?.
3/ Nếu muốn tìm cột F2 đến cột cuối cùng để định dạng thì dùng code gì?.

Giải đáp giùm nhen. đang học mờ (trình độ VBA < 0 mờ).

TC.
 
Mã:
 Giải đáp giùm nhen. đang học mờ (trình độ VBA < 0 mờ).
Trình độ vậy là quá, có cần tạo ra mỗi cột mỗi sh không đại ca.
Dùng tạm cái này nhé, qua lễ sẽ làm = vòng lặp khoa học hơn.
Hỏi thì phải chờ làm đã, làm mà chưa test lại sợ bạn chửi nên hơi lâu
 

File đính kèm

cái này mình thấy nó lun tun quá không ra cái nào cả, không hiểu bạn lấy nó ở đâu thấy nhứt đầu ghê! êhhehehehehe
 
ThuNghi ơi nhìn code của Bác kinh quá. Trình độ như tui đọc xong là mờ mắt luôn.
Cảm ơn sự nhiệt tình của Bác.

TC
 
Tôi lấy code của digita áp dụng thử mà. Nó có OK không. PP chủ yếu là Advance Filter dùng unique record only để tạo ra cái sườn, còn lại dùng sumproduct.
 
Thien đã viết:
ThuNghi ơi nhìn code của Bác kinh quá. Trình độ như tui đọc xong là mờ mắt luôn.
Cảm ơn sự nhiệt tình của Bác.

TC

Cố mà hiểu vậy, chờ ThuNghi đi xem Hoa hậy Thế giới VN về thì làm tiếp (không biết lúc đó còn sức không nữa)

Hy vọng lúc dó mắt chưa mờ.
 
Đính chính ở bài 02 quên gửi kèm file lên. Các bác xem qua giải đáp dùm nhen.

TC.
 

File đính kèm

Ái chà chà hy vọng qua lễ các bạn cho mình lời giải thích từ bài #2 thông qua file bài #8.

Thân chào.


PS: Chúc các bạn hưởng những ngày lễ thoải mái, vui vẻ & hạnh phúc bên những người thân.
 
Code cũ dùng vẫn OK nếu thích bạn chép code sau vào, có khoa học hơn.
Sub LayData()
Dim i As Integer, j As Integer, iCols As Integer
Dim jRows As Integer, iRows As Integer
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Call TaoTKCT 'Tao Tai khoan chi tiet
S02.Range("a2:X1000").ClearContents
S02.Range("E2:X1000").ClearFormats
iCols = WorksheetFunction.CountA(S02.Range("F1:X1"))
iRows = WorksheetFunction.CountA(S01.Range("SoCT"))
j = 1 'lay so ct
For i = 2 To iRows + 1
If S01.Cells(i - 1, 2) <> S01.Cells(i, 2) Then
j = j + 1
With S02
For k = 1 To 4
.Cells(j, k) = S01.Cells(i, k + 1)
Next k
End With
End If
Next i
'lay sotien
S02.Select
jRows = WorksheetFunction.CountA(S02.Range("A2:A1000"))
For i = 2 To jRows + 1
With S02
.Range("F" & i) = "=SUMPRODUCT((TKDU=Xuat!R1C)*(SoCT=Xuat!RC3)*(SoTien))"
.Range("F" & i).Copy
.Range(Cells(i, 7), Cells(i, iCols + 5)).Select
.Paste
.Range(Cells(i, 5), Cells(i, iCols + 5)).NumberFormat = "#,##0"
Application.CutCopyMode = False
.Range("E" & i) = WorksheetFunction.Sum(Range(Cells(i, 6), Cells(i, iCols + 5)))
End With
S02.Range(Cells(i, 6), Cells(i, iCols + 5)).Value = Range(Cells(i, 6), Cells(i, iCols + 5)).Value
Next i
For j = 5 To iCols + 5 'dong sum
With S02
.Cells(jRows + 2, j) = "=SUM(R2C:R[-1]C)"
.Cells(jRows + 2, j).Font.Bold = True
End With
Next j

With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub

Sub TaoTKCT()
Dim rListSort As Range
S01.Range("X1:X1000").ClearContents
S02.Range("F1", S02.Range("X1").End(xlToRight)).ClearContents
With Range("TKDU")
.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=S01.Range("X1"), Unique:=True
End With
With S01
.Range("X1").Delete
.Names("Extract").Delete
End With
Set rListSort = S01.Range("X1", S01.Range("X1000").End(xlUp))
With rListSort
.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
rListSort.Copy
With S02
.Range("F1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End With
Application.CutCopyMode = False
Set rListSort = Nothing
S01.Range("X1:X1000").ClearContents
End Sub
 
Thien đã viết:
Ái chà chán quá nhỉ. Mỗi lần mình hỏi thì chẳng ít người ngó đến mà giải đáp nhỉ.
Thui đi ngủ thui.

TC.
Cuối cùng là xếp định hỏi gì nào ???

1/ Tại sao chỉ cần chạy code TrichNgang là được còn CungCTu & XoaDong thì chẳng đụng gì đến cả?.
Cái này chưa nghiên cứu nên trả lời sau (if I can)
Nhưng mình không thích cách sắp xếp TK như của File trên. TK phải xếp từ nhỏ đến lớn mới đẹp

2/ Nếu muốn tìm dòng cuối cùng trong cột số tiền để đặt hàm sum thì dùng đoạn code nào?.
iR = Sheet3.Range("C65000").End(xlUp).Row Là dòng cuối cùng.
Nếu là dòng để đặt tổng cộng là : iR +1

Hàm sum tại cột H (VD thôi)
Sheet3.Range("H" & iR + 1).Value = WorksheetFunction.Sum(Sheet3.Range("H7:H" & iR))

Muốn cho tất cả các cột thì dùng nhiều cách khác nhau (vòng lặp chẳng hạn)

3/ Nếu muốn tìm cột F2 đến cột cuối cùng để định dạng thì dùng code gì?.
iC = Sheet3.Range("IV6").End(xlToLeft).Column
Sheet3.Range(Cells(2, 6), Cells(iR, iC)).Select

Chú thích : F2 = Cells(2,6)


Thân




 
Dear ThuNghi.
Bạn nhiệt tình thế, mình rất cảm ơn. Để mình ngâm cứu rùi cho mình hỏi những chỗ không biết nhen.

Dear Bắp.
Đặt hàm sum tại 1 cột sau khi dò tìm hàng cuối cùng trong 1 cột thì OK rùi. Nhưng muốn đặt hàm sum ở tất cả các cột có TK phát sinh trong file của mình thì làm hoài không được.
Giúp nhen.

Thân chào.
 
Thien đã viết:
Đặt hàm sum tại 1 cột sau khi dò tìm hàng cuối cùng trong 1 cột thì OK rùi. Nhưng muốn đặt hàm sum ở tất cả các cột có TK phát sinh trong file của mình thì làm hoài không được.
Giúp nhen.

Thân chào.


PHP:
    Dim TC As Range
    For Each TC In Sheet3.Range(Cells(iR + 1, 6), Cells(iR + 1, iC))
        TC.Value = WorksheetFunction.Sum(Sheet3.Range(Cells(2, TC.Column), Cells(iR, TC.Column)))
    Next

Đây là dùng vòng lặp (chỉ là 1 cách trong nhiều cách thôi)

Cố nghiên cứu nhé

Thân!
 
Dear Bắp.
Cảm ơn nhen, mình làm được rùi. Chỉ có 1 chút nữa thui là sao mình không ngắt được đến cột cuối cùng để đặt hàm sum thui. Ở đây code chạy đến cột IV luôn & từ cột chứa TK 141 trở đi dòng sum là con số 0 chạy dài xuống tới cột IV luôn. Làm sao đây?.
À có cách nào cho sắp xếp TK trích ra từ nhỏ đến lớn không nhỉ?. hiện tại cho kết quả ngược lại.

Lại cực Bắp & các bạn giải đáp rùi.

Thân chào.
 
Thien đã viết:
Cảm ơn nhen, mình làm được rùi. Chỉ có 1 chút nữa thui là sao mình không ngắt được đến cột cuối cùng để đặt hàm sum thui. Ở đây code chạy đến cột IV luôn & từ cột chứa TK 141 trở đi dòng sum là con số 0 chạy dài xuống tới cột IV luôn. Làm sao đây?.

Xin lỗi vì làm ẩu quá
Em sửa lại nhé :

iC = Sheet3.Range("IV6").End(xlToLeft).Column

Thien đã viết:
À có cách nào cho sắp xếp TK trích ra từ nhỏ đến lớn không nhỉ?. hiện tại cho kết quả ngược lại.

Hiện tại không phải là ngược lại mà là từ trên xuống dưới.
Cậu cứ trình bày ý tưởng để làm việc này đi. Có ý tưởng rồi chúng ta mới viết code.

Thân!

P/S : Mặc dù đã có Dear nhưng mình vẫn không thích cách gọi trống không là Bắp,cảm ơn tình thân thiện đó nhưng trước một cộng đồng thì cho mình cái tên đầy đủ nhé. Lúc nào rảnh Cafe thì vẫn OK.


 
Dear Mr Okebab.
Hay quá chỉ cần đổi 1 chữ là được rùi. Cảm ơn nhen.

Thân chào.


P/S: Hôm nào rảnh em mời uống càphê nhen. Còn khi nào Tuấn từ HN vào mà có nhậu với bê con thì nhớ Alô nhen.
 
Web KT

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

Back
Top Bottom