Tự động điền số trong excel

  • Thread starter Thread starter 790312
  • Ngày gửi Ngày gửi
Liên hệ QC

790312

Thành viên hoạt động
Tham gia
7/4/08
Bài viết
181
Được thích
8
Các bạn có thể chỉ cho mình thí dụ : Khi ta nhập vào ô A1 số 9 thì ô B1 đến ô B9 sẽ lần lượt hiện số 1 đến 9.Gõ số 5 thì ô B1 đến ô B5 sẽ hiện số 1 đến 5,số 6 ,7 ,8,9 phía dưới sẽ tự động xoá....Nói chung là số hàng trong cột B sẽ phụ thuộc vào số trong ô A1.Chân thành cảm ơn.
 
Bạn thử dùng đoạn Code này xem có được kkông nhé! Vì mới tập tành học viết code nên code còn dài. Mong mọi người giúp đỡ thêm!
PHP:
    If Not Intersect([A1], Target) Is Nothing Then
      Range("B1:B100").Clear
      n = Range("A1")
      If Not IsNumeric(n) Then
          MsgBox "Du lieu khong hop le, vui long nhap lai"
          Range("A1").Select
      ElseIf n < 0 Or Int(n) <> n Then
          MsgBox "Du lieu khong hop le, vui long nhap lai"
          Range("A1").Select
      Else
          For i = 1 To n
          Range("B" & i) = i
          Next
      End If
  End If
  End Sub
Các bác cho em hỏi tại sao không gộp 2 dòng lệnh

PHP:
    If Not IsNumeric(n) Then
      ElseIf n < 0 Or Int(n) <> n Then


Thành
PHP:
  If Not IsNumeric(n) Or n < 0 Or Int(n) <> n Then
Em đã thử rồi mà không được.
 
Upvote 0
Bạn thử dùng đoạn Code này xem có được kkông nhé! Vì mới tập tành học viết code nên code còn dài. Mong mọi người giúp đỡ thêm!
Các bác cho em hỏi tại sao không gộp 2 dòng lệnh

PHP:
    If Not IsNumeric(n) Then
      ElseIf n < 0 Or Int(n) <> n Then


Thành
PHP:
  If Not IsNumeric(n) Or n < 0 Or Int(n) <> n Then
Em đã thử rồi mà không được.

Bạn thử thay OR thành AND xem sao!
 
Upvote 0
Các bạn có thể chỉ cho mình thí dụ : Khi ta nhập vào ô A1 số 9 thì ô B1 đến ô B9 sẽ lần lượt hiện số 1 đến 9.Gõ số 5 thì ô B1 đến ô B5 sẽ hiện số 1 đến 5,số 6 ,7 ,8,9 phía dưới sẽ tự động xoá....Nói chung là số hàng trong cột B sẽ phụ thuộc vào số trong ô A1.Chân thành cảm ơn.


Bạn xem file đính kèm xem có đúng ý bạn không.
Thân.
 

File đính kèm

Upvote 0
To hoangminhtien: Bạn thử với đoạn code này xem sao:

PHP:
Private Sub Worksheet_Change(ByVal target As Range)
If Not Intersect([A1], target) Is Nothing Then
  [B1:B100].Clear
  n = [A1]
  If Not IsNumeric(n) Or n < 0 Or Int(Val(n)) <> n Then
    MsgBox "Du lieu khong hop le, vui long nhap lai"
    [A1].Select
  Else
    For i = 1 To n
      Range("B" & i) = i
    Next
  End If
End If
End Sub
 
Upvote 0
Bạn thử dùng đoạn Code này xem có được kkông nhé! Vì mới tập tành học viết code nên code còn dài. Mong mọi người giúp đỡ thêm!
PHP:
    If Not Intersect([A1], Target) Is Nothing Then
      Range("B1:B100").Clear
      n = Range("A1")
      If Not IsNumeric(n) Then
          MsgBox "Du lieu khong hop le, vui long nhap lai"
          Range("A1").Select
      ElseIf n < 0 Or Int(n) <> n Then
          MsgBox "Du lieu khong hop le, vui long nhap lai"
          Range("A1").Select
      Else
          For i = 1 To n
          Range("B" & i) = i
          Next
      End If
  End If
  End Sub
Các bác cho em hỏi tại sao không gộp 2 dòng lệnh

PHP:
    If Not IsNumeric(n) Then
      ElseIf n < 0 Or Int(n) <> n Then


Thành
PHP:
  If Not IsNumeric(n) Or n < 0 Or Int(n) <> n Then
Em đã thử rồi mà không được.
Bạn có thể dùng FUNCTION được không,dùng SUB hơi bất tiện không nhấn UNDO được.THanks
 
Upvote 0
Bạn có thể dùng FUNCTION được không,dùng SUB hơi bất tiện không nhấn UNDO được.THanks

Thì file của bạn Havietchuong đã làm cho bạn rồi đó! Xem file nhé.

(Nếu 790312 đã nhấp cám ơn, xin Mod xóa threat này, xem như đã xem qua)
 
Upvote 0
Bài loại này hình như tôi đã nói nhiều lần rồi thì phài... sao các bạn cứ phải FOR nhỉ
Điền STT mà, chỉ vầy là đủ
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
    Range("B:B").ClearContents
    Range("B1").Resize(Target) = Evaluate("ROW(R:R)")
  End If
End Sub
Ăn tiền ở chổ Evaluate("ROW(R:R)") đấy!
Còn vụ bẩy lổi gì đó các bạn tự thêm vào!
 
Upvote 0
bạn cũng rãnh quá he, xem 2 công thức dưới có khác gì không
A2=IF((A1-(A1-1)+ROW(A1)-1)<=$A$1,$A$1-($A$1-1)+ROW(A1)-1,"")
A2=IF(ROW(A1)<=$A$1,ROW(A1),"")

Thật ra không phải ở không đâu ! Nhứt đầu lắm.
Ban đầu chọn cho nó là 1 đi, kế tiếp là 2,.... và nếu quá giới hạn của Cell A1 thì "". Cho nên từng bước nó dài dòng thế đấy.
Đúng là gọn hơn nhiều lắm. Bạn xem lại dùm có đúng ý bạn không?
(Đúng hơn là ở Cell B1)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
bạn cũng rãnh quá he, xem 2 công thức dưới có khác gì không
A2=IF((A1-(A1-1)+ROW(A1)-1)<=$A$1,$A$1-($A$1-1)+ROW(A1)-1,"")
A2=IF(ROW(A1)<=$A$1,ROW(A1),"")
Thật ra không phải ở không đâu ! Nhứt đầu lắm.
Ban đầu chọn cho nó là 1 đi, kế tiếp là 2,.... và nếu quá giới hạn của Cell A1 thì "". Cho nên từng bước nó dài dòng thế đấy.
Đúng là gọn hơn nhiều lắm. Bạn xem lại dùm có đúng ý bạn không?
(Đúng hơn là ở Cell B1)
Các bạn để ý thế này:
- Nếu dùng công thức mà gõ số 20000 vào cell A1 thì file của các bạn có dung lượng bao nhiêu?
- Kể cả chưa gõ gì vào cell A1 thì các bạn cũng phải fill công thức đến dòng 20000 (nếu dự trù STT đến đây)
Vậy có thể rút ra kết luận:
- Nếu dùng công thức thì cho tốc độ nhanh nhưng dung lượng file quá lớn
- Dùng code với vòng lập For sẽ cho dung lượng file nhỏ hơn nhưng tốc độ xử lý chậm
Cách dùng Evaluate(....) là tổng hợp ưu điểm của 2 cách trên đấy!
 
Upvote 0
Các bạn để ý thế này:
- Nếu dùng công thức mà gõ số 20000 vào cell A1 thì file của các bạn có dung lượng bao nhiêu?
- Kể cả chưa gõ gì vào cell A1 thì các bạn cũng phải fill công thức đến dòng 20000 (nếu dự trù STT đến đây)
Vậy có thể rút ra kết luận:
- Nếu dùng công thức thì cho tốc độ nhanh nhưng dung lượng file quá lớn
- Dùng code với vòng lập For sẽ cho dung lượng file nhỏ hơn nhưng tốc độ xử lý chậm
Cách dùng Evaluate(....) là tổng hợp ưu điểm của 2 cách trên đấy!

Cám ơn bạn phân tích để anh em hiểu thêm vấn đề hay hơn, nhưng với vốn liếng vừa đủ để lập công thức thì chưa hiểu thêm được những điều bạn nói rồi.
Hiện nay, tôi đang ở bước đầu tìm hiểu về VBA, tôi đã tải về tài liệu "chapchung VBA" trên GPE, đọc đi đọc lại, lên máy làm thử thì kết quả không như mong muốn.
Khó khăn của tôi là những vốn từ ngữ của VBA. Bạn có tài liệu nào để giúp cho những người mới bước vào VBA này hiểu được ngôn ngữ của nó một cách tạm thời được không?
Chân thành cám ơn bạn.
Chúc vui vẻ.
 
Upvote 0
Cám ơn bạn phân tích để anh em hiểu thêm vấn đề hay hơn, nhưng với vốn liếng vừa đủ để lập công thức thì chưa hiểu thêm được những điều bạn nói rồi.
Hiện nay, tôi đang ở bước đầu tìm hiểu về VBA, tôi đã tải về tài liệu "chapchung VBA" trên GPE, đọc đi đọc lại, lên máy làm thử thì kết quả không như mong muốn.
Khó khăn của tôi là những vốn từ ngữ của VBA. Bạn có tài liệu nào để giúp cho những người mới bước vào VBA này hiểu được ngôn ngữ của nó một cách tạm thời được không?
Chân thành cám ơn bạn.
Chúc vui vẻ.
Bạn à! Tài liệu nhiêu đó, kết hợp với các bài viết thường ngày trên GPE cũng tạm cho bạn dùng rồi
Vấn đề là: Bước đầu nào mà chẳng gặp khó khăn, ai viết code mà khỏi cần sửa đi sửa lại thì chắc là thiên tài (riêng tôi chưa lần nào viết được 1 phát chạy ngay) ---> Quan trọng là cố gắng và đừng nản chí
Hãy bắt đầu bằng các đoạn code đơn giản nhất, ví dụ là bài này đây! (Mục tiêu là ra được kết quả trước, sau đó mới tính đến việc tối ưu)
Tôi học VBA cũng bằng các tài liêu của thầy SA_DQ đấy thôi, sau đó "nâng cấp" thêm bằng bài viết này:
http://www.giaiphapexcel.com/forum/showthread.php?t=6354
Hãy tham khảo xem!
 
Upvote 0
Hiện nay, tôi đang ở bước đầu tìm hiểu về VBA, tôi đã tải về tài liệu "chapchung VBA" trên GPE, đọc đi đọc lại, lên máy làm thử thì kết quả không như mong muốn.
. . . .

Bạn hãy nêu rõ hơn về kết quả của các cuộc thử nghiệm mà không mĩ mãn của bạn; May ra sẽ được giải đáp thỏa đáng hơn!
 
Upvote 0
Web KT

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

Back
Top Bottom