Chuyển đổi giá trị trong Ô (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thuongsykxps

Thành viên chính thức
Tham gia
3/6/08
Bài viết
67
Được thích
20
Chào cả nhà!

Mình có 1 vấn đề mong cả nhà giúp đỡ.

Khiclick vào buttom thì ô A1-A10 là số 1
Khiclick tiếp cái thứ 2 thì ô A1-A10 chuyển thành số 0
Vàvòng lặp cứ thực hiện lại như vậy.

Mong mọi người giúp mình.
Cảm ơn cả nhà!

 

File đính kèm

Chào cả nhà!

Mình có 1 vấn đề mong cả nhà giúp đỡ.

Khiclick vào buttom thì ô A1-A10 là số 1
Khiclick tiếp cái thứ 2 thì ô A1-A10 chuyển thành số 0
Vàvòng lặp cứ thực hiện lại như vậy.

Mong mọi người giúp mình.
Cảm ơn cả nhà!


Code vầy chắc được:
Mã:
Sub Test()
  Range("A1:A10").Value = Range("A1").Value Xor 1
End Sub
 
Upvote 0
Em làm đươc rồi, cho em hỏi thêm mình muốn khi click vào thì ẩn dòng, click tiếp cái nữa thì hiện dòng, thầy giúp em nha.

Cảm ơn thầy nhiều!
 
Upvote 0
Em làm đươc rồi, cho em hỏi thêm mình muốn khi click vào thì ẩn dòng, click tiếp cái nữa thì hiện dòng, thầy giúp em nha.

Cảm ơn thầy nhiều!

Cụ thể là ẩn hiện dòng nào?
Tôi ví dụ ẩn hiện từ dòng 6 đến dòng 10 nhé:
Mã:
  Rows("6:10").Hidden = Not Rows("6:10").Hidden
End Sub
 
Upvote 0
Mã:
Range("A1:A10").Value = Range("A1").Value [B][COLOR=#0000cd]Xor[/COLOR][/B] 1
[FONT=Verdana]
Rows("6:10").Hidden = Not Rows("6:10").Hidden[/FONT]

Ndu lắm chuyện thật. Mấy cái vụ này hôm nay mới thấy.

Lúc đầu cứ tưởng Xor là do viết nhầm. Vậy ý nghĩa của nó là gì vậy ?

Cảm ơn nhiều !
 
Lần chỉnh sửa cuối:
Upvote 0
Ndu lắm chuyện thật. Mấy cái vụ này hôm nay mới thấy.

Lúc đầu cứ tưởng Xor là do viết nhầm. Vậy ý nghĩa của nó là gì vậy ?

Cảm ơn nhiều !
Đúng là quái chiêu, nhưng thử thay A1:A10 thành số khác ví dụ 999, rồi thay Xor 1 thành 2 hay 3 gì đó rồi thử cũng "hơi hơi" biết nó làm cái gì.
Hì hì.
 
Upvote 0
Đúng là quái chiêu, nhưng thử thay A1:A10 thành số khác ví dụ 999, rồi thay Xor 1 thành 2 hay 3 gì đó rồi thử cũng "hơi hơi" biết nó làm cái gì.
Hì hì.

Tôi nhập số 99.

Với Xor 1 thì kết quả là 98 - 99

Với Xor 10 thì kết quả là 105 - 99

=> Chẳng hiểu gì sất.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi nhập số 99.

Với Xor 1 thì kết quả là 98 - 99

Với Xor 10 thì kết quả là 105 - 99

=> Chẳng hiểu gì sất.

xor là toán tử cũng như vd. and

Ta xét a xor b. Thường thì ta xét a, b cùng là giá trị lôgíc - TRUE/FALSE hoặc bit - 0/1
Nếu a và b có cùng giá trị (cùng TRUE, cùng FALSE, cùng 0 hoặc cùng 1) thì a xor b trả về 0. Còn

nếu a và b khác giá trị thì a xor b trả về 1.
Toàn bộ triết lý chỉ có thế thôi.
---------------
Tại sao 99 xor 1 = 98 và 98 xor 1 = 99, 99 xor 10 = 105 và 105 xor 10 = 99?

Mã:
01100011 = 99 (ta biểu diễn bằng 1 bai = 8 bit)
00000001 = 1
01100010 = 99 xor 1 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01100010 = 98

01100010 = 98 (ta biểu diễn bằng 1 bai = 8 bit)
00000001 = 1
01100011 = 98 xor 1 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01100011 = 99

01100011 = 99 (ta biểu diễn bằng 1 bai = 8 bit)
00001010 = 10
01101001 = 99 xor 10 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01101001 = 105

01101001 = 105 (ta biểu diễn bằng 1 bai = 8 bit)
00001010 = 10
01100011 = 105 xor 10 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01100011 = 99

Nếu biểu diễn bằng 4 bai = 32 bit (giá trị Long, vd. những số lớn) thì các phép tính ở trên không thay đổi vì 0 xor 0 = 0

Nên lưu ý là AND tương tự. AND không chỉ là toán tử lôgíc mà cũng có thể là phép tính bit - ta AND cho từng cặp bit tương ứng và

Mã:
1 and 0 = 0 and 1 = 0 and 0 = 0
1 and 1 = 1

ví dụ 105 and 10 = 8. Thử làm như trên tôi đã làm với xor thì sẽ thấy
 
Upvote 0
xor là toán tử cũng như vd. and

Ta xét a xor b. Thường thì ta xét a, b cùng là giá trị lôgíc - TRUE/FALSE hoặc bit - 0/1
Nếu a và b có cùng giá trị (cùng TRUE, cùng FALSE, cùng 0 hoặc cùng 1) thì a xor b trả về 0. Còn

nếu a và b khác giá trị thì a xor b trả về 1.
Toàn bộ triết lý chỉ có thế thôi.
---------------
Tại sao 99 xor 1 = 98 và 98 xor 1 = 99, 99 xor 10 = 105 và 105 xor 10 = 99?

Mã:
01100011 = 99 (ta biểu diễn bằng 1 bai = 8 bit)
00000001 = 1
01100010 = 99 xor 1 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01100010 = 98

01100010 = 98 (ta biểu diễn bằng 1 bai = 8 bit)
00000001 = 1
01100011 = 98 xor 1 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01100011 = 99

01100011 = 99 (ta biểu diễn bằng 1 bai = 8 bit)
00001010 = 10
01101001 = 99 xor 10 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01101001 = 105

01101001 = 105 (ta biểu diễn bằng 1 bai = 8 bit)
00001010 = 10
01100011 = 105 xor 10 - ta áp dụng xor cho từng cặp bit
Rõ ràng 01100011 = 99

Nếu biểu diễn bằng 4 bai = 32 bit (giá trị Long, vd. những số lớn) thì các phép tính ở trên không thay đổi vì 0 xor 0 = 0

Nên lưu ý là AND tương tự. AND không chỉ là toán tử lôgíc mà cũng có thể là phép tính bit - ta AND cho từng cặp bit tương ứng và

Mã:
1 and 0 = 0 and 1 = 0 and 0 = 0
1 and 1 = 1

ví dụ 105 and 10 = 8. Thử làm như trên tôi đã làm với xor thì sẽ thấy

Cảm ơn Thầy Siwtom nhiều !

Nếu không có bài này thì chắc cả đời tôi cũng không hiểu vì từ xưa tới nay có biết bit bai là gì đâu? với lại kiểu này khó chơi quá, để vận dụng vào công việc khác thì có lẽ phải dài dài. Vậy tạm thời "Coi như chưa nhìn thấy".
 
Upvote 0
Ndu lắm chuyện thật. Mấy cái vụ này hôm nay mới thấy.

Lúc đầu cứ tưởng Xor là do viết nhầm. Vậy ý nghĩa của nó là gì vậy ?

Cảm ơn nhiều !

Em lập trình điện tự động hóa rất thường dùng toán tử XOR này nên thấy nó rất thường (may là trong VBA có nên "quất" luôn)
Anh có thể hiểu đơn giản XOR là vầy:
XOR = OR(AND(Biểu thức 1, Not(Biểu thức 2)), AND(Not(Biểu thức 1), Biểu thức 2))
Bảng chân trị:

Biểu thức 1 | Biểu thức 2 | XOR

0|0|0

0|1|1

1|0|1

1|1|0

XOR cho kết quả là "CÓ" khi 2 biểu thức "trái dấu" nhau... các trường hợp còn lại cho kết quả là "KHÔNG"
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom