Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

Liên hệ QC
Status
Không mở trả lời sau này.

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
Em thật sự xin lỗi vì sự giải thích rắm rối của em làm mọi người không hiểu được. Nay em tải lại file. Và đã nói rõ trong file. Xin các anh các chị giúp cho em. Em xin chân thành cảm ơn. Mong mỏi chờ tin hồi âm của các anh các chị
 

File đính kèm

  • Thu nghiem.xls
    51.5 KB · Đọc: 10
Upvote 0
Ai giúp tôi dịch ra tiếng Việt các câu sau với

- Tớ đưa lại bàng này nhé:
Ví dụ: tại cột BS và cột CD tại bảng chính ghép được các con số sau:
- Con thứ nhất là : + 23, 32 đem so sánh với dòng 3 bảng phụ không tìm được con nào cả thì tiếp tục chạy code
- Con thứ là : 53, 35 so sánh với dòng 4 bảng phụ thì thấy có 35 chạy tiếp code.
- Con thứ là: 23, 32 so sánh với dòng 5 tại bảng phụ thì thấy có 32 chạy tiếp code
- Con thứ tiếp là 48,84 nếu mà tìm thấy có cả 48 và 84 nhưng trong đó 48 hoặc 84 có tại dòng 6 bảng phụ thì hiện lên số tiêp là: 06
1./ Cột BS & CD là cột nào vậy ta, ở bảng chính?
2./ Tại sao số 23 được đánh dấu '+' mà số 32 thì không có dấu ấy?
3./ Mà tại sao chủ có 2 số ấy thôi?

Mất thời gian của nhau quá đi mất!
 
Upvote 0
thật ra là em lấy ví dụ là tại hai cột đó ghép với nhau thôi. Anh có thấy em đánh dấu màu vàng không?
Chứ nếu mà ghép thì nhiều lắm cả ngàn con số cơ.
em xin trả lời:
- 2 cột BS và cột CD là 2 cột em có đánh dấu làm ví dụ ở sheet : chính đó
- dấu (+) là em đánh nhầm vào thôi, không có gì liên quan cả
- Em chỉ lấy ví dụ là 2 cột đó thôi, tại nhiều quá dùng mắt thường mà ghép chắc đến sang năm quá bác ah
 
Upvote 0
Chờ xem bóng đá định viết code giùm bạn nhưng thực sự mình chả hiểu gì cả
Bạn nên dành ra thời gian viết bài mô tả quá trình bạn phải làm thế nào, cứ cho là bạn phải làm bằng tay đi. Bắt đầu từ đâu, nếu thấy thì làm gì và không thấy làm gì. Có như vậy mọi người mới giúp bạn được. Mình thấy nhiều anh em kỳ cựu đã có ý kiến với bài của bạn nhưng chắc họ cũng rơi vào tình trạng như mình.
 
Lần chỉnh sửa cuối:
Upvote 0
Tự nhiên thấy ngứa nghề fiên dịch. khà, khà,. . .

Đây là những gì sau 1 thời gian dài suy ngẫm & đoán già, đoán non:

(*) Hiện tại bên 'Chinh' có 5 dòng, trị các ô điều là 1 kí số;
Ta hãy ghép lần lượt 2 ô làm 1 (& hoán đổi vị trí cho nhau nữa) để được cơ man nào là số có 2 chữ số;
Ví dụ: Trong dẫy
|A|B|C|D|E|. . .
2 |6|9|8|0|0|5
Đầu tiên ta sẽ có 69, rồi 96; 68, 86; 60, 06,. . .

(*) Đem lần lượt các số ghép này đối chiếu với từng hàng của vùng dữ liệu tại 'Phu' (Là các ô chứa 2 ký số trong nó)
Nếu tìm thấy trùng 2 lần thì dừng & báo kết quà; Còn không vậy thì cứ tiếp. . . Mệt nghỉ!

(Đây là bản dịch cho người có quốc tịch ngoài Việt nam & quan trọng là cấm cười, khì, khì,. . . )
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Đúng rồi bạn HYến ah. Có tất cả các bước sau:
-B1: lấy tất cả các kí số tại dòng 2 bảng "chính" ghép lại với nhau ( có hoán đổi vị trí) rồi đem so sánh với dòng 3 bảng "phụ".
-B2: lấy tất cả các kí số tại dòng 3 bảng "chính" ghép lại với nhau ( có hoán đổi vị trí) rồi đem so sánh với dòng 4 bảng "phụ".
-B3: lấy tất cả các kí số tại dòng 4 bảng "chính" ghép lại với nhau ( có hoán đổi vị trí) rồi đem so sánh với dòng 5 bảng "phụ".
-B4: lấy tất cả các kí số tại dòng 5 bảng "chính" ghép lại với nhau ( có hoán đổi vị trí) rồi đem so sánh với dòng 6 bảng "phụ".
-B5: Nếu đạt được đủ ĐK thì hiện lên kết quả tại ô "AN15" bảng phụ

Điều kiện của các bước là:
-B1: Tất cả những số ghép với nhau tại dòng 2 bảng "chính"không có trong dòng 3 bảng phụ thì chạy tiếp đến bước 2
-B2: Tất cả những số ghép với nhau tại dòng 3 bảng "chính" trong dòng 4 bảng phụ thì chạy tiếp đến bước 3
-B3: Tất cả những số ghép với nhau tại dòng 4 bảng "chính" trong dòng 5 bảng phụ thì chạy tiếp đến bước 4
-B4: Tất cả những số ghép với nhau tại dòng 5 bảng "chính" trong dòng 6 bảng phụ thì chạy tiếp đến bước 5
-B5: những số ghép với nhau tại dòng 6 bảng "chính" Nếu đạt đủ điều kiện thì hiện kết quả lên ô "AN 15" tại bảng phụ

Tất cả các bước trừ B4 ra thì em đã làm xong. chỉ còn tại bước 4 em muốn thêm 1 diều kiện nữa vào là nếu các số ghép nay mà tìm thấy có 2 lần xuất hiện thì mới chậy đến B5.

Em ngu văn dốt học nên có gì thì các anh chị cứ thẳng tay chỉ bảo. Em chân thành cám ơn
 
Upvote 0
Mình tìm ra (2836-13) kết quả ngay tại bước 1 rồi

Xin xem bảng trích kết quả như sau:

Chinh|Chinh|Fu
$A$2|$B$2|$F$3
$A$2|$F$3|$F$3
$A$2|$AD$2|$F$3
$A$2|$AE$2|$F$3
$A$2|$BL$2|$F$3
$A$2|$BQ$2|$F$3
$A$2|$CB$2|$F$3
$A$2|$CP$2|$F$3
$A$2|$CQ$2|$F$3
$A$2|$CR$2|$F$3

Macro trong file đính kèm:
 

File đính kèm

  • GPE.rar
    43.2 KB · Đọc: 18
Upvote 0
Vẫn còn vấn đề cần rõ hơn:
-Điều kiện 1 ngược với 4 điều kiện sau?
-Trong các điều kiện thoả mãn thì thực hiện như bạn giải trình. Ngược lại thì làm gì (Thoát ra, Thông báo, Điền vào ô nào đó....) ?
 
Upvote 0
Vẫn còn vấn đề cần rõ hơn:
-Điều kiện 1 ngược với 4 điều kiện sau?
-Trong các điều kiện thoả mãn thì thực hiện như bạn giải trình. Ngược lại thì làm gì (Thoát ra, Thông báo, Điền vào ô nào đó....) ?

- Đúng là diều kiện tại bước 1 ngược với 4 diều kiện sau đó. Bởi nó phải chạy từng phần một. Và mỗi phần đều có điều kiện khác nhau. (chỉ có B2,B3 là có điều kiện giống nhau mà thôi).
- và thêm 1 điều kiện tại bước 4.
- nếu thoả mãn các điều kiện thì điền kết quả là các số ghép tìm được vào ô "BS 15" của bảng phụ. Còn không thì để rỗng
 
Lần chỉnh sửa cuối:
Upvote 0
Từ từ xong bước I cái đã, các bạn!

Bạn khẳng định rằng:
-B1: Tất cả những số ghép với nhau tại dòng 2 bảng "chính" mà không có trong dòng 3 bảng phụ thì chạy tiếp đến bước 2

Nhưng mình thấy là ; Vậy tác giả topic đã kiểm kết quả mình đưa ra chưa?

Hãy khẳng định xem ai sai thì mới tiếp bước (2) được!

Chờ tin tác giả. --=0 --=0
 
Upvote 0
Khi ghép tất cả các ô tại dòng 2 lại với nhau thì tất nhiên là có rồi. Nhưng điều kiện là lấy nhũng ô khi ghép lại với nhau mà đem so sánh với dòng 3 bảng phụ mà không có kia.
 
Upvote 0
Em cũng ghi rõ đièu kiện ở bên trên của từng bước rồi mà hicc. Tại em dốt quá không biết phải trình bày thế nào cho rõ ràng được cả hic +-+-+-++-+-+-++-+-+-++-+-+-+
 
Upvote 0
Mình lại tưởng cách ghép kiểu này chứ:

ghép ô A2 với B2 ta được 69; thì con số này đang chình ình ở F3 bảng fụ đó thôi?!

& đây nữa: B2 ghép với h2 của bảng chính ta có 94 thì G3 ở bảng kia có 49 đó thay

Hay ghép theo kiểu nào khác vậy?

@!## @!##
 
Upvote 0
Đúng là ghép kiểu đó: nhưng nếu những con số nào ghép mà có thì loại đi:
Nhờ anh thử kiểm tra lại tại cột. BS và CD bảng chính thì biêts nhe: ( em chỉ lấy ví dụ là 2 cột này thôi, chứ thật ra thì có vô số cột phù hợp với điều kiện chạy đầu tiên này)
ghép tại dòng 2 ta được các số: 23,32 đem 2 số này so sánh với dòng 3 bảng phu. thì không thấy có. phù hợp diều kiện với bước 1. vậy là xong bước 1. chạy tiếp đến bước 2
ghép tại dòng 3 ta được các số: 53,35 đem 2 số này so sánh với dòng 4 bảng phu. thì thấy có : 35 . phù hợp diều kiện với bước21. vậy là xong bước 2. chạy tiếp đến bước 3.....
Thế nên em mới phải dùng vòng for để hoán vị tất cả và đem tất cả các số đó mà so sánh.
 
Upvote 0
Tôi muốn hỏi chỗ này:
Con thứ tiếp là 48,84 nếu mà tìm thấy có cả 48 và 84 nhưng trong đó 48 hoặc 84 có tại dòng 6 bảng phụ thì hiện lên số tiêp là: 06
1. Nếu chỉ tìm thấy 1 trong 2 số 48 và 84 trong dòng 6 bảng phụ thì có tiếp đến bước 5 không?
2. Tại sao điền vào kết quả là 60 mà là 06. Chỗ này có quy tắc gì không?
 
Upvote 0
Tôi muốn hỏi chỗ này:

1. Nếu chỉ tìm thấy 1 trong 2 số 48 và 84 trong dòng 6 bảng phụ thì có tiếp đến bước 5 không?
2. Tại sao điền vào kết quả là 60 mà là 06. Chỗ này có quy tắc gì không?
- Chính vì nó vẫn tiếp tục chạy bước 5 nên em muốn thêm điều kiện. là phả tìm thấy cả 2 số. và ít nhất một trong 2 số đó có xuất hiện từ 2 lần trở lên thì mới tiếp tục bước 5.
- Chỗ diền kết quả là con 60 hay con 06 không quan trong lắm.
Em chân thành cám ơn sự quan tâm của mọi người
 
Upvote 0
- Chính vì nó vẫn tiếp tục chạy bước 5 nên em muốn thêm điều kiện. là phả tìm thấy cả 2 số. và ít nhất một trong 2 số đó có xuất hiện từ 2 lần trở lên thì mới tiếp tục bước 5.
- Chỗ diền kết quả là con 60 hay con 06 không quan trong lắm.
Em chân thành cám ơn sự quan tâm của mọi người
Kết quả của tôi khác với kết quả mẫu của bạn. Một số kết quả của bạn tôi không biết từ đâu mà có.
Bạn chạy code và so sánh kết quả với kết quả của bạn. Chỉ ra vị trí các cột cho kết quả 93, 23, 05,... trong kết quả mẫu của bạn.
PHP:
Sub Test()
Dim Phu1 As String, Phu2 As String, Phu3 As String, Phu4 As String, Str As String
Dim Arr As Variant
Dim i As Long, ii As Long
Dim Rng As Range
Set Rng = Range(Sheets("Phu").[B3], Sheets("Phu").[IV3].End(xlToLeft).Offset(, 1))
With Application.WorksheetFunction
    Phu1 = Join(.Transpose(.Transpose(Rng)), " ")
    Phu2 = Join(.Transpose(.Transpose(Rng.Offset(1))), " ")
    Phu3 = Join(.Transpose(.Transpose(Rng.Offset(2))), " ")
    Phu4 = Join(.Transpose(.Transpose(Rng.Offset(3))), " ")
End With
Set Rng = Nothing
Arr = Range(Sheets("Chinh").[A2], Sheets("Chinh").[IV6].End(xlToLeft)).Value
For i = 1 To Sheets("Chinh").[IV2].End(xlToLeft).Column
    For ii = i + 1 To Sheets("Chinh").[IV2].End(xlToLeft).Column
        If InStr(Phu1, " " & Arr(1, i) & Arr(1, ii) & " ") + InStr(Phu1, " " & Arr(1, ii) & Arr(1, i) & " ") > 0 Then GoTo NextN
        If InStr(Phu2, " " & Arr(2, i) & Arr(2, ii) & " ") + InStr(Phu2, " " & Arr(2, ii) & Arr(2, i) & " ") = 0 Then GoTo NextN
        If InStr(Phu3, " " & Arr(3, i) & Arr(3, ii) & " ") + InStr(Phu3, " " & Arr(3, ii) & Arr(3, i) & " ") = 0 Then GoTo NextN
        If InStr(Phu4, " " & Arr(4, i) & Arr(4, ii) & " ") * InStr(Phu4, " " & Arr(4, ii) & Arr(4, i) & " ") = 0 Then GoTo NextN
        If InStr(InStr(Phu4, " " & Arr(4, i) & Arr(4, ii) & " ") + 1, Phu4, " " & Arr(4, i) & Arr(4, ii) & " ") + InStr(InStr(Phu4, " " & Arr(4, ii) & Arr(4, i) & " ") + 1, Phu4, " " & Arr(4, ii) & Arr(4, i) & " ") = 0 Then GoTo NextN
        Str = Str & Arr(5, i) & Arr(5, ii) & " "
NextN:
    Next
Next
Sheets("Phu").[AN16].Value = Replace(Trim(Str), " ", ", ")
End Sub
 

File đính kèm

  • Test.xls
    60.5 KB · Đọc: 20
Lần chỉnh sửa cuối:
Upvote 0
Hỏi Code xóa sheet đang active

Cho mình hỏi, mình viết đoạn code sau:

Sub Xoasheet()
ActiveWindow.ActiveSheets.Delete
Menu.Show
End Sub

Mục đích của mình là khi Click vào button của sheet đó, thì thực hiện lệnh xóa Sheet đó và hiện Form menu. Nhưng khi mình Click vào thì Form Menu hiện lên, nhưng Sheet đó vẫn không xóa. Vậy mình phải sửa lại chổ nào.
 
Lần chỉnh sửa cuối:
Upvote 0
Cho mình hỏi, mình viết đoạn code sau:

Sub Xoasheet()
ActiveWindow.ActiveSheets.Delete
Menu.Show
End Sub

Mục đích của mình là khi Click vào button của sheet đó, thì thực hiện lệnh xóa Sheet đó và hiện Form menu. Nhưng khi mình Click vào thì Form Menu hiện lên, nhưng Sheet đó vẫn không xóa. Vậy mình phải sửa lại chổ nào.
Nếu không có bẫy lỗi thì code của bạn bị lỗi chứ làm gì hiện UserForm được. Bạn sửa lại như thế này.
PHP:
Sub Button1_Click()
Application.DisplayAlerts = False
ActiveWindow.ActiveSheet.Delete
Menu.Show
Application.DisplayAlerts = True
End Sub
Nhưng tôi vẫn thấy kỳ kỳ. Xóa sheet hiện hành thì Button cũng bị xóa luôn. Lần sau lấy cái gì mà Click đây.
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom