vanphuc1701
Thành viên mới
- Tham gia
- 26/11/06
- Bài viết
- 14
- Được thích
- 3
MONG MỌI NGƯỜI GIÚP DÙM. CẢM ƠN NHIỀU NHIỀU!!
Hỏi về sử dụng công thức có sẵn của Excel trong VB??? Cảm ơn các cao thủ đã quan tâm.Mình đang tập tành học VB nên không đủ sức giải quyết các vấn đề này :
Vấn đề 1a :
Giả sử từ E8:E1000 có 75 dòng dữ liệu. Nhưng A5 =1????; B5=75 . Sửa lại thế nào để ko cần “mangdem" vẫn có đáp số đúng.
Đáp số : A5 =1 không đúng ý mong đợi ; B5=75 đúng ý .
Tại sao A5 =1. Sửa lại thế nào để ko cần thông qua “mangdem" nhưng đáp số B5 vẫn là 75 không ???.
Vấn đề 1b: Số liệu có thể bố trí ở khắp từ (“Asốdòng:Xsốdòng” )
Hàm hay code nào để có được số dòng cuối cùng của bảng tính. Xác định được đáp số : sốdòng ?????
Vấn đề 2 : Gán công thức SUMPRODUCT cho một CELL với một biến đếm được tính từ công thức có sẵn của Excel. Đoạn code lỗi ở đâu tại sao CELL có công thức SUMPRODUCT không đúng : =SUMPRODUCT(('E8':'E16'>10)*('E8':'E16'<=18)*('X8':'X16'=A10)*'P8':'P16') ???????
Vấn đề 3a : Application.Run "sub nào đó" khác Run "sub nào đó" như thế nào? Cái nào chạy nhanh hơn
Vấn đề 3b : Cao thủ nào đó cho mình xin đoạn code để ghép vào đoạn code khác đếm thời gian chạy nhằm so sánh tính nhanh chậm của các đoạn code
Vấn đề 3c : vidu() và Test() cái nào chạy nhanh hơn ???????
Sub Vidu()
Đoạn code để Thi hành nhóm lệnh 1
Đoạn code để Thi hành nhóm lệnh 2
Đoạn code để Thi hành nhóm lệnh 3
Đoạn code để Thi hành nhóm lệnh 4
Đoạn code để Thi hành nhóm lệnh 5
Đoạn code để Thi hành nhóm lệnh 6
End Sub
Sub Test()
Application.Run “vidu1”
Application.Run “vidu2”
Application.Run “vidu3”
End Sub
với
Sub Vidu1() ‘: gom nhóm lệnh 1-2 lại
Thi hành lệnh 1
Thi hành lệnh 2
End Sub
Sub Vidu2() ‘: gom nhóm lệnh 3-4 lại
Thi hành lệnh 3
Thi hành lệnh 4
End Sub
Sub Vidu3() ‘: gom nhóm lệnh 5-6 lại
Thi hành lệnh 5
Thi hành lệnh 6
End Sub
Vấn đề 4: Hỏi về CASE ?????????????
‘Kiểm tra giá trị cột AA để gán công thức cho cột Z
DangCongThuc = Range("AA" & i).Value
Select Case CongThuc
Case "a+b+c+d+e"
Range("Z" & i).Value = "=sum(F" & i & ":J" & i & ")"
Case "4*a+2*b"
Range("Z" & i).Value = "=4*F" & i & "+2*G" & i & ""
Case …….
……………
‘Hỏi : Thêm đoạn code nào để nếu không thỏa mãn các “CASE” trên thì thực hiện : ?????????????
'Range("Z" & i).Value = "NOTE : ch" & ChrW(432) & "a có cách tính chi" & ChrW(7873) & "u dài"
End Select
Vấn đề 5 : giải thích đoạn code này dùm
Vấn đề 6 : khống chế dấu “,” và dấu “;” . Mình tạo code để FormatConditions nhưng khi đi máy khác nó sẽ hiểu sai dấu “,” và “;” do định dạng mỗi máy khác nhau vì thế phải vào sửa lại code. Đoạn code nào để khống chế điều này .
Range("B8" & ":AA" & SoDong).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A8<>"""""
Selection.FormatConditions(1).Borders(xlTop).Weight = xlThin
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A8="""",$E8<>0)" '???????LÀM SAO KHỐNG CHẾ DẤU “;” VÀ “,” nhiều ĐOẠN CODE KHÁC ĐỀU BỊ NHƯ VẬY.
Selection.FormatConditions(2).Borders(xlTop).Weight = xlHairline
Selection.FormatConditions(2).Borders(xlBottom).Weight = xlHairline
Vấn đề 7 : tạo DEFINAME
Hỏi : Mình có sheet1, sheet2,…. Mình muốn tạo definename gồm các tên sau đây : MangA, MangB, MangC. Muốn mở sheet mới, chạy lệnh thì đều tạo được các definename này, TẤT CẢ CÁC SHEET KHI THỰC HIỆN LỆNH ĐỀU CÓ THỂ TẠO CÁC DEFINENAME TRÙNG TÊN, PHỤ THUỘC VÀO DỮ LIỆU CỘT 5 CỦA CÁC SHEET. Code hiện nay của mình tạo definename ở sheet1, qua sheet2 tạo thì sheet1 mất, phải làm sao?
ActiveWorkbook.Names.Add Name:="MangA", RefersToR1C1:="=OFFSET(R8C23,0,0,COUNTA(R8C5:R1000C5),1)"
ActiveWorkbook.Names.Add Name:="MangB", RefersToR1C1:="=OFFSET(R8C16,0,0,COUNTA(R8C5:R1000C5),1)"
ActiveWorkbook.Names.Add Name:="MangC", RefersToR1C1:="=OFFSET(R8C5,0,0,COUNTA(R8C5:R1000C5),1)"
Vấn đề 8 : Hỏi về ComboBox
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1
End Sub
Sửa lại thế nào để ComboBox chỉ thực thi trong cột A của Sheet : NKC thôi ?????
Hỏi về sử dụng công thức có sẵn của Excel trong VB??? Cảm ơn các cao thủ đã quan tâm.Mình đang tập tành học VB nên không đủ sức giải quyết các vấn đề này :
Vấn đề 1a :
Giả sử từ E8:E1000 có 75 dòng dữ liệu. Nhưng A5 =1????; B5=75 . Sửa lại thế nào để ko cần “mangdem" vẫn có đáp số đúng.
Mã:
[FONT=Times New Roman][SIZE=3]Sub Vidu()[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]Dim mangdem As Range[/SIZE][/FONT]
[SIZE=3][FONT=Times New Roman]Set mangdem = ActiveSheet.Range("E8:E1000")[/FONT][/SIZE]
[FONT=Times New Roman][SIZE=3]Range("A5").Value = ActiveSheet.Application.WorksheetFunction.CountA("E8:E1000")[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]Range("B5").Value = ActiveSheet.Application.WorksheetFunction.CountA(mangdem)[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]End Sub[/SIZE][/FONT]
Tại sao A5 =1. Sửa lại thế nào để ko cần thông qua “mangdem" nhưng đáp số B5 vẫn là 75 không ???.
Vấn đề 1b: Số liệu có thể bố trí ở khắp từ (“Asốdòng:Xsốdòng” )
Hàm hay code nào để có được số dòng cuối cùng của bảng tính. Xác định được đáp số : sốdòng ?????
Vấn đề 2 : Gán công thức SUMPRODUCT cho một CELL với một biến đếm được tính từ công thức có sẵn của Excel. Đoạn code lỗi ở đâu tại sao CELL có công thức SUMPRODUCT không đúng : =SUMPRODUCT(('E8':'E16'>10)*('E8':'E16'<=18)*('X8':'X16'=A10)*'P8':'P16') ???????
Mã:
[FONT=Times New Roman][SIZE=3]Dim ChiuThua As Integer[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]Dim mangdem As Range[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]Set mangdem = ActiveSheet.Range("E8:E1000")[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]............................[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]............................[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]ChiuThua = ActiveSheet.Application.WorksheetFunction.CountA(mangdem) + 7[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3]Range("S100").Value = "=SUMPRODUCT((E8:E" & ChiuThua & ">18)*(X8:X" & ChiuThua & "=RC[-18])*P8:P" & ChiuThua & ")"[/SIZE][/FONT]
Vấn đề 3a : Application.Run "sub nào đó" khác Run "sub nào đó" như thế nào? Cái nào chạy nhanh hơn
Vấn đề 3b : Cao thủ nào đó cho mình xin đoạn code để ghép vào đoạn code khác đếm thời gian chạy nhằm so sánh tính nhanh chậm của các đoạn code
Vấn đề 3c : vidu() và Test() cái nào chạy nhanh hơn ???????
Sub Vidu()
Đoạn code để Thi hành nhóm lệnh 1
Đoạn code để Thi hành nhóm lệnh 2
Đoạn code để Thi hành nhóm lệnh 3
Đoạn code để Thi hành nhóm lệnh 4
Đoạn code để Thi hành nhóm lệnh 5
Đoạn code để Thi hành nhóm lệnh 6
End Sub
Sub Test()
Application.Run “vidu1”
Application.Run “vidu2”
Application.Run “vidu3”
End Sub
với
Sub Vidu1() ‘: gom nhóm lệnh 1-2 lại
Thi hành lệnh 1
Thi hành lệnh 2
End Sub
Sub Vidu2() ‘: gom nhóm lệnh 3-4 lại
Thi hành lệnh 3
Thi hành lệnh 4
End Sub
Sub Vidu3() ‘: gom nhóm lệnh 5-6 lại
Thi hành lệnh 5
Thi hành lệnh 6
End Sub
Vấn đề 4: Hỏi về CASE ?????????????
‘Kiểm tra giá trị cột AA để gán công thức cho cột Z
DangCongThuc = Range("AA" & i).Value
Select Case CongThuc
Case "a+b+c+d+e"
Range("Z" & i).Value = "=sum(F" & i & ":J" & i & ")"
Case "4*a+2*b"
Range("Z" & i).Value = "=4*F" & i & "+2*G" & i & ""
Case …….
……………
‘Hỏi : Thêm đoạn code nào để nếu không thỏa mãn các “CASE” trên thì thực hiện : ?????????????
'Range("Z" & i).Value = "NOTE : ch" & ChrW(432) & "a có cách tính chi" & ChrW(7873) & "u dài"
End Select
Vấn đề 5 : giải thích đoạn code này dùm
Mã:
[SIZE=3][FONT=Times New Roman]ThongKe = ThongKe & IIf(InStr(1, ThongKe, Right("00" & Application.Range("E" & i).Value, 2)) = 0, "," & Right("00" & Application.Range("E" & i).Value, 2), "")[/FONT][/SIZE]
Vấn đề 6 : khống chế dấu “,” và dấu “;” . Mình tạo code để FormatConditions nhưng khi đi máy khác nó sẽ hiểu sai dấu “,” và “;” do định dạng mỗi máy khác nhau vì thế phải vào sửa lại code. Đoạn code nào để khống chế điều này .
Range("B8" & ":AA" & SoDong).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A8<>"""""
Selection.FormatConditions(1).Borders(xlTop).Weight = xlThin
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A8="""",$E8<>0)" '???????LÀM SAO KHỐNG CHẾ DẤU “;” VÀ “,” nhiều ĐOẠN CODE KHÁC ĐỀU BỊ NHƯ VẬY.
Selection.FormatConditions(2).Borders(xlTop).Weight = xlHairline
Selection.FormatConditions(2).Borders(xlBottom).Weight = xlHairline
Vấn đề 7 : tạo DEFINAME
Hỏi : Mình có sheet1, sheet2,…. Mình muốn tạo definename gồm các tên sau đây : MangA, MangB, MangC. Muốn mở sheet mới, chạy lệnh thì đều tạo được các definename này, TẤT CẢ CÁC SHEET KHI THỰC HIỆN LỆNH ĐỀU CÓ THỂ TẠO CÁC DEFINENAME TRÙNG TÊN, PHỤ THUỘC VÀO DỮ LIỆU CỘT 5 CỦA CÁC SHEET. Code hiện nay của mình tạo definename ở sheet1, qua sheet2 tạo thì sheet1 mất, phải làm sao?
ActiveWorkbook.Names.Add Name:="MangA", RefersToR1C1:="=OFFSET(R8C23,0,0,COUNTA(R8C5:R1000C5),1)"
ActiveWorkbook.Names.Add Name:="MangB", RefersToR1C1:="=OFFSET(R8C16,0,0,COUNTA(R8C5:R1000C5),1)"
ActiveWorkbook.Names.Add Name:="MangC", RefersToR1C1:="=OFFSET(R8C5,0,0,COUNTA(R8C5:R1000C5),1)"
Vấn đề 8 : Hỏi về ComboBox
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1
End Sub
Sửa lại thế nào để ComboBox chỉ thực thi trong cột A của Sheet : NKC thôi ?????
Chỉnh sửa lần cuối bởi điều hành viên: