làm thế nào để fill hết công thức

Liên hệ QC

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia
17/4/16
Bài viết
2,701
Được thích
2,434
Giới tính
Nam
Nghề nghiệp
Nhân viên kỹ thuật in ấn
Chào mọi người!

Em có vấn đề nhờ mọi người hố trợ.

Em muốn fill hết công thức khi gặp các ô chứa dữ liệu,(trong sheet 2 em có nêu yêu cầu)

Em cảm ơn mọi người nhiều!
 

File đính kèm

Chào mọi người!

Em có vấn đề nhờ mọi người hố trợ.

Em muốn fill hết công thức khi gặp các ô chứa dữ liệu,(trong sheet 2 em có nêu yêu cầu)

Em cảm ơn mọi người nhiều!
Chị nói rõ hơn chút được hem em chưa hiểu ý chị muốn
 
Chị nói rõ hơn chút được hem em chưa hiểu ý chị muốn
Ý là khi sử dụng công thức tham chiếu khi kéo xuống thì gặp dòng có dữ liệu nó dừng lại. Ý là có cách nào làm nhanh nhất không? Và kéo xuống tiếp gặp dòng có dữ liệu nơ dừng lại.
 
Bạn biết Excel lâu quá nên từ Fill ăn sâu vào tìm thức.
Ý của bạn là copy công thức giống như khi Fill vào các cells trống ở cột B. Cho đến ô cuối cột A có chứa dữ liệu phải không?
Nếu bạn không muốn File Excel của bạn chứa Macro thì làm tạo Add-ins, nếu bạn muốn dùng VBA, Và thêm cho nó 1 phím tắc.


copy code dưới vào một module và lưu dạng xls / xlsb/ xlsm/ xlam/ xla
PHP:
'Để sử dụng phím tắc đặt sub OnKeyFillBlank vào sự kiện Workbook Open'
'Hoặc chạy sub OnKeyFillBlank bằng tay

Sub OnKeyFillBlank()
  Application.OnKey "^+q" , "test_FillBlank"
  'Phím tắt Ctrl + Shift + q'
' Đặt Application.OnKey "^+q" , ""  để xóa phím tắt
 'Chú ý Không thay đổi các phím tắt của Excel
End Sub
Sub test_FillBlank()
  FillBlank RngA:=[a2], Rupt:=True ', RngF:=[b2]
  'Rupt = True thì chỉ copy đến khi gặp ô chứa dữ liệu hoặc công thức đầu tiên sẽ dừng
  'Nếu RngF bỏ trống thì RngF sẽ là cells nằm sau RngA
  'Để thể thực hiện ở 2 trang tính : FillBlank RngA:=Sheet1.[a2] , RngF:=Sheet2.[b2], Rupt:=True
End Sub
Sub FillBlank(RngA As Range, Optional ByVal RngF As Range, _
              Optional ByVal Rupt As Boolean = False)
  Dim LRow&, TRow&, Col&, Rng, Rngs, isRupt As Boolean
  TRow = RngA.Row: Col = RngA.Column
  With RngA.Parent
    If RngF Is Nothing Then
      Set RngF = .Cells(TRow, Col + 1)
    End If
    LRow = .Cells(Rows.Count, Col).End(xlUp).Row
    Set Rngs = RngF.Parent.Range(RngF, RngF.Parent.Cells(LRow, RngF.Column))
    For Each Rng In Rngs
      If Rng.Formula = "" Then
        If Not isRupt Then isRupt = True
        Rng.Formula = RngF.FormulaR1C1
      Else
        If isRupt And Rupt Then Exit Sub
      End If
    Next Rng
  End With
  Set Rngs = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Nếu dữ liệu không quá lớn, đơn giản nhất bạn có thể làm như sau:
- B1: Copy công thức đó
- B2: chọn vùng dữ liệu chứa các khoảng trống cần paste công thức vào (ví dụ trong file mẫu là B2:B49)
bước này nếu bạn biết sử dụng các phím tắt di chuyển & bôi đen thì thao tác sẽ rất nhanh
- B3: nhấn Ctrl + G > Special > Blanks (bước này dùng để chọn các ô trống cần paste công thức)
- B4: nhấn Ctrl + V => done
 
Nếu dữ liệu không quá lớn, đơn giản nhất bạn có thể làm như sau:
- B1: Copy công thức đó
- B2: chọn vùng dữ liệu chứa các khoảng trống cần paste công thức vào (ví dụ trong file mẫu là B2:B49)
bước này nếu bạn biết sử dụng các phím tắt di chuyển & bôi đen thì thao tác sẽ rất nhanh
- B3: nhấn Ctrl + G > Special > Blanks (bước này dùng để chọn các ô trống cần paste công thức)
- B4: nhấn Ctrl + V => done
Dữ liệu của mình khoảng 35000 dòng đó. Có cách nào hay hơn không?
 
Dữ liệu của mình khoảng 35000 dòng đó. Có cách nào hay hơn không?
Như bài 4 của anh HesanBi
Mã:
Sub test_FillBlank()
  FillBlank RngA:=[a2], Rupt:=False 'Chỉnh True thành False
End Sub
Sub FillBlank(RngA As Range, Optional ByVal RngF As Range, _
              Optional ByVal Rupt As Boolean = False)
  Dim LRow&, TRow&, Col&, Rng, Rngs, isRupt As Boolean
  TRow = RngA.Row: Col = RngA.Column
  With RngA.Parent
    If RngF Is Nothing Then
      Set RngF = .Cells(TRow, Col + 1)
    End If
    LRow = .Cells(Rows.Count, Col).End(xlUp).Row
    Set Rngs = RngF.Parent.Range(RngF, RngF.Parent.Cells(LRow, RngF.Column))
    For Each Rng In Rngs
      If Rng.Formula = "" Then
        If Not isRupt Then isRupt = True
        Rng.Formula = RngF.FormulaR1C1
      Else
        If isRupt And Rupt Then Exit Sub
      End If
    Next Rng
  End With
  Set Rngs = Nothing
End Sub
 
Bạn biết Excel lâu quá nên từ Fill ăn sâu vào tìm thức.
Ý của bạn là copy công thức giống như khi Fill vào các cells trống ở cột B. Cho đến ô cuối cột A có chứa dữ liệu phải không?
Nếu bạn không muốn File Excel của bạn chứa Macro thì làm tạo Add-ins, nếu bạn muốn dùng VBA, Và thêm cho nó 1 phím tắc.


copy code dưới vào một module và lưu dạng xls / xlsb/ xlsm/ xlam/ xla
PHP:
'Để sử dụng phím tắc đặt sub OnKeyFillBlank vào sự kiện Workbook Open'
'Hoặc chạy sub OnKeyFillBlank bằng tay

Sub OnKeyFillBlank()
  Application.OnKey "^+q" , "test_FillBlank"
  'Phím tắt Ctrl + Shift + q'
' Đặt Application.OnKey "^+q" , ""  để xóa phím tắt
End Sub
Sub test_FillBlank()
  FillBlank RngA:=[a2], Rupt:=True ', RngF:=[b2]
  'Rupt = True thì chỉ copy đến khi gặp ô chứa dữ liệu hoặc công thức đầu tiên sẽ dừng
  'Nếu RngF bỏ trống thì RngF sẽ là cells nằm sau RngA
  'Để thể thực hiện ở 2 trang tính : FillBlank RngA:=Sheet1.[a2] , RngF:=Sheet2.[b2], Rupt:=True
End Sub
Sub FillBlank(RngA As Range, Optional ByVal RngF As Range, _
              Optional ByVal Rupt As Boolean = False)
  Dim LRow&, TRow&, Col&, Rng, Rngs, isRupt As Boolean
  TRow = RngA.Row: Col = RngA.Column
  With RngA.Parent
    If RngF Is Nothing Then
      Set RngF = .Cells(TRow, Col + 1)
    End If
    LRow = .Cells(Rows.Count, Col).End(xlUp).Row
    Set Rngs = RngF.Parent.Range(RngF, RngF.Parent.Cells(LRow, RngF.Column))
    For Each Rng In Rngs
      If Rng.Formula = "" Then
        If Not isRupt Then isRupt = True
        Rng.Formula = RngF.FormulaR1C1
      Else
        If isRupt And Rupt Then Exit Sub
      End If
    Next Rng
  End With
  Set Rngs = Nothing
End Sub
Anh ơi! Anh có thể tổng quát cho trường hợp dựa vào điều kiện cần tham chiếu.
Vlookup(giá trị dò. Bảng dò. Cột dò. Kiểu dò)
Điều kiện ở đây la giá trị dò. Mà giá trị dò không nằm ở cột cố định đó Anh.
Em cảm ơn Anh nhiều!
 
Anh ơi! Anh có thể tổng quát cho trường hợp dựa vào điều kiện cần tham chiếu.
Vlookup(giá trị dò. Bảng dò. Cột dò. Kiểu dò)
Điều kiện ở đây la giá trị dò. Mà giá trị dò không nằm ở cột cố định đó Anh.
Em cảm ơn Anh nhiều!
Với giá trị dò không cố định thì tôi chưa gặp để viết code trong VBA, vì VBA thì dữ liệu phải ngay hàng thẳng lối.
Cần có ví dụ xem sao
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom