Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 13
-
12-06-10, 09:05 AM #1
Hỏi về Hàm If Then Else có điều kiện là Hàm Left trong VBA
Tại ô C7 (tương ứng với dòng 7, cột 3) của Sheet A có giá trị thay đổi:
Ô C7 giá trị sẽ thay đổi hoặc C7 = 131 hoặc C7 = 331
Mình viết code trong VBA cho Kết quả hiện ở ô J9 như sau:
If Left(R7C3,1) = 1 Then
Range("A!J9") = 1
Else
Range("A!J9") = 3
End If
Cho mình hỏi, mình lần lượt thay đổi ô C7 là 131 hoặc 331 nhưng kết quả tại ô J9 đều cho 1 giá trị là 3. Vậy mình viết code này sai chỗ nào và sửa như thế nào?
-
12-06-10, 09:16 AM #2
- "Người thông minh không chịu học thì có khác gì đất tốt mà không được cày xới."
- "Hôm qua là quá khứ, ngày mai là bí ẩn, hôm nay là món quà. Tôi không có khả năng để lý giải những bí ẩn. Cho nên tôi chỉ biết trân trọng món quà của ngày hôm nay mà thôi."
- "Người thông minh không chịu học thì có khác gì đất tốt mà không được cày xới."
-
12-06-10, 09:50 AM #3
Mình đã Test trên File rồi. Kết quả cho đúng như ý, nhưng mình nhờ bạn hướng dẫn thêm đoạn này nhé.
Đoạn code này mình đã rút ngắn bớt. Mục đích của mình là: tại ô J11 là một công thức Sumproduct tính các số liệu, số này có thể âm hoặc dương. Nếu ô J11 là số dương thì gán số đó vào ô D11, nếu là số âm thì gán vào ô E11 (lúc này ô E11 thể hiện là số dương của ô J11), sau đó xóa giá trị tại ô J11. Nếu code có thể rút ngắn đuợc xin bạn chỉ giáo.PHP Code:With Sheets("THCN")
If Left(.Range("C7"), 1) = 1 Then
.Range("J11") = -10 ô J11 là một công thức cho ra giá trị có âm hoặc dương
If Range("J11").Value > 0 Then
Range("D11").Value = Range("J11").Value
Else
Range("E11").Value = -Range("J11").Value
End If
Else
...
End With
thay đổi nội dung bởi: hoangdanh282vn, 13-06-10 lúc 12:06 AM
-
12-06-10, 11:02 AM #4
Thử code sau:
Code:Sub Test() With Sheets("THCN") If Left(.Range("C7"), 1) = 1 Then .Range("J11") = -10 Select Case .Range("J11").Value Case Is >= 0 .Range("D11") = .Range("J11") Case Else .Range("E11") = (.Range("J11")) * -1 End Select .Range("J11").ClearContents End With End Sub- "Người thông minh không chịu học thì có khác gì đất tốt mà không được cày xới."
- "Hôm qua là quá khứ, ngày mai là bí ẩn, hôm nay là món quà. Tôi không có khả năng để lý giải những bí ẩn. Cho nên tôi chỉ biết trân trọng món quà của ngày hôm nay mà thôi."
- "Người thông minh không chịu học thì có khác gì đất tốt mà không được cày xới."
-
12-06-10, 11:45 AM #5
Mình thấy có cái gì đó không được, ô J11 là công thức vậy khi gán giá trị thì bỏ công thức sao?
Nếu đúng vậy Code chỉ có thế này chứ
Toàn bộ Code nằm sau câu lệnh 2 và trước câu lệnh 5 thì đương nhiên chỉ có J11=-10 chứ còn làm gì có trường hợp khácCode:1 With Sheets("THCN") 2 If Left(.Range("C7"), 1) = 1 Then 3 .Range("J11") = -10 'ô J11 la? mô?t công thu+?c cho ra gia? tri? co? âm hoa(?c du+o+ng 4 .Range("D11").Value = .Range("J11").Value 5 Else 6 '... 7 End If 8 End With
Lưu ý bạn sau lệnh With bạn phải có dấu chấm dẫn chiếu nếu không dễ lỗi lắm vì không xác định được o đó là của Sheet nào. (Nếu là code của Sheet thì khỏi cần With khi tham chiếu đến vùng của Sheet đó). Lỗi này có trong khá nhiều bài viết của bạn.thay đổi nội dung bởi: sealand, 12-06-10 lúc 11:50 AM
Mobi: 012.6718.0555
E-Mail: vieth@live.com
*VBA EXPRESS * MrExcel.com * OzGrid.com*Excel-it*MrExcel*Java2*Acc*
-
Có 2 thành viên cảm ơn sealand về bài viết này:
-
12-06-10, 07:02 PM #6
Code của bạn nhìn qua tưởng là đúng nhưng sai một điểm nghiêm trọng đó là kiểu giá trị.
Kết quả của hàm LEFT, RIGHT, TRIM,....là một văn bản. Trong biểu thức tính toán, giá trị văn bản (hằng số) phải đặt trong nháy kép ("").
Code của bạn cần sửa lại như sau:
HoặcCode:If Left(R7C3,1) = "1" Then 'So sánh 2 giá trị văn bản Range("A!J9") = 1 Else Range("A!J9") = 3 End If
Code:If CLng(Left(R7C3,1)) = 1 Then 'So sánh 2 số kiểu Long Range("A!J9") = 1 Else Range("A!J9") = 3 End If
-
Có 4 thành viên cảm ơn Nguyễn Duy Tuân về bài viết này:
-
13-06-10, 07:30 AM #7
-
Có 2 thành viên cảm ơn ndu96081631 về bài viết này:
-
13-06-10, 08:26 AM #8
-
Có 2 thành viên cảm ơn Nguyễn Duy Tuân về bài viết này:
-
13-06-10, 08:48 AM #9
Ví dụ:
- Tại cell A1 ta gõ số 123
- Tại cell B1 ta gõ số 1
Code này cho kết quả = TRUE
Nhưng code này thì cho kết quả = FALSEPHP Code:Sub Test()
MsgBox Left([A1], 1) = 1
End Sub
Tương tự thế với các trường hợp sô sánh giá trị dạng số trong 1 TextBox với giá trị của 1 cellPHP Code:Sub Test()
MsgBox Left([A1], 1) = [B1]
End Sub
-
Có 3 thành viên cảm ơn ndu96081631 về bài viết này:
-
14-06-10, 09:41 AM #10
Cảm ơn bạn đã Lưu ý dùm mình, mình đưa lên diễn đàn để cho gọn mình gán luôn giá trị ô J11 là -10, chứ code đầy đủ như sau:
Đoạn code này là mình điều chỉnh lại theo đoạn code của anh Domfootwear, như sao sau khi tính tại cột D vẫn là giá trị âm (nếu kết quả đúng thì số âm này phải ở cột E và giá trị âm. Nhờ mấy Anh xem gúp.PHP Code:With Sheets("THCN")
If Left(.Range("C7"), 1) = 1 Then
.Range("THCN!J11:J" & i + 9).FormulaR1C1 = _
"=SUMPRODUCT(--(Data!R3C4:R" & r & "C4<R6C3),--(Data!R3C6:R" & r & "C6=R7C3),--(Data!R3C17:R" & r & "C17=RC2),--(Data!R3C8:R" & r & "C8))-SUMPRODUCT(--(Data!R3C4:R" & j & "C4<R6C3),--(Data!R3C7:R" & j & "C7=R7C3),--(Data!R3C18:R" & j & "C18=RC2),--(Data!R3C8:R" & j & "C8))"
Select Case .Range("THCN!J11:J" & i + 9)
Case Is >= 0
.Range("THCN!D11:D" & i + 9).Value = .Range("THCN!J11:J" & i + 9).Value
Case Else
.Range("THCN!E11:E" & i + 9).Value = (.Range("THCN!J11:J" & i + 9).Value) * -1
End Select
.Range("THCN!J11:J" & i + 9).ClearContents
Else
.Range("THCN!J11:J" & i + 9).FormulaR1C1 = _
"=SUMPRODUCT(--(Data!R3C4:R" & j & "C4<R6C3),--(Data!R3C7:R" & j & "C7=R7C3),--(Data!R3C18:R" & j & "C18=RC2),--(Data!R3C8:R" & j & "C8))-SUMPRODUCT(--(Data!R3C4:R" & r & "C4<R6C3),--(Data!R3C6:R" & r & "C6=R7C3),--(Data!R3C17:R" & r & "C17=RC2),--(Data!R3C8:R" & r & "C8))"
Select Case .Range("THCN!J11:J" & i + 9)
Case Is >= 0
.Range("THCN!E11:E" & i + 9).Value = .Range("THCN!J11:J" & i + 9).Value
Case Else
.Range("THCN!D11:D" & i + 9).Value = (.Range("THCN!J11:J" & i + 9).Value) * -1
End Select
.Range("THCN!J11:J" & i + 9).ClearContents
End If
End With
thay đổi nội dung bởi: ptm0412, 14-06-10 lúc 09:57 AM Lý do: BỎ CODE VÀO TAG
Thông tin về chủ đề này
Users Browsing this Thread
Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)
Đề tài tương tự
-
Hàm left
Viết bởi Duong gia trong chuyên mục Hàm và công thức ExcelTrả lời: 13Bài mới gởi: 19-08-12, 03:21 PM -
Hàm left và hàm right không chạy được
Viết bởi Namlevu trong chuyên mục Giải thích, gỡ rối, xử lý lỗi công thứcTrả lời: 8Bài mới gởi: 21-07-12, 10:54 AM -
Giúp em hàm if lồng hàm Left với
Viết bởi langtuomdan trong chuyên mục Hướng dẫn sử dụng các hàm trong ExcelTrả lời: 4Bài mới gởi: 07-03-09, 05:26 PM -
Sự cố với hàm LEFT ?
Viết bởi huongsmile trong chuyên mục Hỏi đáp những vấn đề khácTrả lời: 6Bài mới gởi: 30-10-08, 08:53 PM -
Sử dụng hàm if kết hợp hàm Left
Viết bởi nhathuy_hanh trong chuyên mục Excel và Kế ToánTrả lời: 2Bài mới gởi: 17-10-08, 07:50 PM








Trả Lời Với Trích Dẫn






Bookmarks