thanhlong68
Thành viên chính thức


- Tham gia
- 17/11/12
- Bài viết
- 66
- Được thích
- 2
Nhờ mọi người viết giúp em code này trong VD
Nhờ mọi người viết giúp em code này trong VD
Viết code nhân với số bất kỳ
Đánh số nào nó sẽ nhân với số đóKhông hiểu NHÂN là nhân cái gì, khi tiêu đề topic của bạn là:
Đánh số nào nó sẽ nhân với số đó
Xin lỗi mình gửi lộn file trong VD trướcbạn tiết kiệm lời nhỉ, đánh số vào đâu và nhân với cái gì vậy???
(trong file kèm của bạn không thấy chỗ nào NHÂN cả)
Xin lỗi mình gửi lộn file trong VD trước
Mình đã gửi lại nhờ mọi người giúp mình với
Ý mình muốn dùng code để nhân tự động sẽ nhanh hơn, các số đó rất nhiều sau mình sẽ dùng hàm để điền vào các ô màu xanh đóĐúng là lộn , nên chẳng thấy gì ăn nhập cả,
-------
Giờ bạn muốn nhân lạ quá, sao không lập công thức lun
Tôi hiểu đỏ là ô xanh (giá trị nhập) hệ số hiệu chỉnh (dự phòng) vv, làm công thức
VD tại F20 lập CT là
=ROUND(E20*D20*F$19,0)
copy cho F khác cùng nhóm
thế là khi F19 thay đổi thì các số cần tính cũng đổi thay,
-------------
Không phải làm khó như bạn yêu cầu,
mà làm khó thế thì cũng không ăn thua, ví như khi người nhập số đầu tiên là 1.3 -các số tích đã nhân 1.3 nhưng là nhầm, nhập lại 1.2 (số đúng) khi này thì nếu theo y.c bạn thì các số tích kia lại nhân tiếp 1.2 --> SAI ah
???
có thể đây chỉ là 1 ý kiến, bạn tiếp tục trao đổi có khi thành viên khác giúp được thì sao
Bạn không có ý kiến gì với bài #6 bên trên sao?Đơn giải là vậy thôi, mình đã sửa lại VD giúp mọi người dễ hiểu hơn
Em thử trong file thầy gửi không thấy chạy, nên em nghĩ có thầy chưa hiểu ý em. Em gửi lại bài mong thầy xem giùm em vớiBạn không có ý kiến gì với bài #6 bên trên sao?
Lỡ bạn định nhập số 3 nhưng gõ nhầm số 5 thì nó nhân lên cho 5, làm sao để lấy lại số ban đầu cho bạn nhập lại số khác?
Tôi đề nghị nhập liệu vào 1 cột phụ kế bên, nhập số nào thì nó nhân với số đó vào đúng cột bạn muốn, nhập số khác sẽ nhân lại cho số khác, khi in ấn ra bảng biểu thì bạn ẩn cột này đi là xong, số liệu ban đầu trong cột phụ này không thay đổi.
1/ Bạn chưa hiểu vấn đề ngừoi viết code hỏi bạn: bạn gõ vào đó số 3, nhưng sau đó bạn biết là mình gõ lầm thì sao?Em thử trong file thầy gửi không thấy chạy, nên em nghĩ có thầy chưa hiểu ý em. Em gửi lại bài mong thầy xem giùm em với
Em đã làm lại rồi lý do không chạy là em nhập sai cột, như thế là ok rồi, nhưng em ghép chung với code này thì nó lại không chạy được thầy bớt chút thời gian xem giùm em nhé1/ Bạn chưa hiểu vấn đề ngừoi viết code hỏi bạn: bạn gõ vào đó số 3, nhưng sau đó bạn biết là mình gõ lầm thì sao?
2/ Không chạy thì bạn phải hỏi làm sao cho code chạy, chứ không phải không chạy là "chưa hiểu ý". Nhất là file của bạn không phải là file tôi làm gởi trong bài #10.(Có lẽ bạn không biết làm thế nào để Enable Macros)
3/ Khi bạn nói rõ 2 ý trên thì sẽ có bài giải cho bạn, nhưng điều 1/ là quan trọng đó, bạn suy nghĩ kỹ lại đi, hình như bạn chưa hình dung ra chuyện này.
4/ Tạm biệt, mong bạn suy nghĩ thật kỹ trước khi phát biểu tiếp.
Private Sub Worksheet_Change(ByVal Target As Range)Application.EnableEvents = False
Dim Cll As Range, sArr(), dArr(), i As Long, J As Long, k As Long, Dic As Object, Tem As String, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
On Error Resume Next
R = Target.Row
If Target.Column = 1 And R > 1 Then
For Each Cll In Target
Tem = UCase(Cll)
If Not Dic.Exists(Tem) Then
Dic.Add Tem, ""
End If
Next
With Sheets("Tong_hop")
sArr = .Range(.[A2], .[A65000].End(xlUp)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 7)
For i = 1 To UBound(sArr, 1)
Tem = UCase(sArr(i, 1))
If Dic.Exists(Tem) Then
k = k + 1
For J = 1 To 7
dArr(k, J) = sArr(i, J)
Next J
End If
Next i
If k Then Cells(R, 1).Resize(k, 7).Value = dArr
For Each Cll In Cells(R, 1).Resize(k)
If Cll.Value <> Cll.Offset(-1) Then
Cll.Resize(, 7).Font.Bold = True
Cll.Resize(, 7).Font.ColorIndex = 3
End If
Next
End If
Set Dic = Nothing
Application.EnableEvents = True
End Sub
Tui sắp "đứt bóng" với bạn rồi đó.Em đã làm lại rồi lý do không chạy là em nhập sai cột, như thế là ok rồi, nhưng em ghép chung với code này thì nó lại không chạy được thầy bớt chút thời gian xem giùm em nhé
PHP:Private Sub Worksheet_Change(ByVal Target As Range)Application.EnableEvents = False Dim Cll As Range, sArr(), dArr(), i As Long, J As Long, k As Long, Dic As Object, Tem As String, R As Long Set Dic = CreateObject("Scripting.Dictionary") On Error Resume Next R = Target.Row If Target.Column = 1 And R > 1 Then For Each Cll In Target Tem = UCase(Cll) If Not Dic.Exists(Tem) Then Dic.Add Tem, "" End If Next With Sheets("Tong_hop") sArr = .Range(.[A2], .[A65000].End(xlUp)).Resize(, 7).Value End With ReDim dArr(1 To UBound(sArr, 1), 1 To 7) For i = 1 To UBound(sArr, 1) Tem = UCase(sArr(i, 1)) If Dic.Exists(Tem) Then k = k + 1 For J = 1 To 7 dArr(k, J) = sArr(i, J) Next J End If Next i If k Then Cells(R, 1).Resize(k, 7).Value = dArr For Each Cll In Cells(R, 1).Resize(k) If Cll.Value <> Cll.Offset(-1) Then Cll.Resize(, 7).Font.Bold = True Cll.Resize(, 7).Font.ColorIndex = 3 End If Next End If Set Dic = Nothing Application.EnableEvents = True End Sub
Tui sắp "đứt bóng" với bạn rồi đó.
Lại chẳng thấy nói gì ---> Cứ như là phớt lờ1/ Bạn chưa hiểu vấn đề ngừoi viết code hỏi bạn: bạn gõ vào đó số 3, nhưng sau đó bạn biết là mình gõ lầm thì sao?
Thôi được rồi bước sau em làm thủ công cũng được rồi. Dù sao em cũng cám ơn thầyTui sắp "đứt bóng" với bạn rồi đó.
Mỗi code sử dụng cho 1 file, có cấu trúc dữ liệu riêng của file đó, bạn nói ghép chung là sao, đâu phải code của file này ghép với code của file khác cũng chạy được.
Mà bạn muốn LÀM CHO FILE NÀO? Code của bài #13 đâu phải của file "nhân cho 1 số" gì đó trong topic này.
Đọc code sơ sơ qua thì hình như chỗ màu vàng vàng mà có dữ liệu thì code hổng thèm chạy là vì cột í là một trong các điều kiện để code chạy_ điều kiện là một số cell trong cột đó phải "hổng có cái quái gì ở trong í"Em đã nối 2 đoạn code và chạy được rồi nhưng trong phần em tô màu vàng dưới đây nếu có dữ liệu thì code sẽ không chạy được. Nhờ thầy ba tê hoặc ai biết thì sửa giúp em