Hỏi về cách chèn dòng tự động trong excel

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

ghzktc

Thành viên mới
Tham gia
22/9/09
Bài viết
35
Được thích
2
Cho mình hỏi, mình có bảng tính, độ dày lớp là 3(m). Chia mỗi lớp là 0,5m thì được 6 dòng
Có cách nào để khi sửa độ dày từ 3 sang 4 (m) thì bảng tính tự động chèn dòng theo không (bao gồm cả công thức)
 
Cho mình hỏi, mình có bảng tính, độ dày lớp là 3(m). Chia mỗi lớp là 0,5m thì được 6 dòng
Có cách nào để khi sửa độ dày từ 3 sang 4 (m) thì bảng tính tự động chèn dòng theo không (bao gồm cả công thức)
Cái này có lẽ phải dùng VBA rồi Bạn ơi. Gởi file lên ghi rõ yêu cầu sẽ có người giúp nhé!
 
Upvote 0
Vậy mình gửi file lên rồi nhờ bạn giúp dùm mình nhé
Ở sheet tính lún có các ô màu đỏ, chiều dày các lớp đất (lớp 1, lớp 2, lớp 3) và chiều dày các lớp phân tố hi có liên quan với nhau
ý mình muốn nếu nhập vào chiều dày các lớp đất, rồi chiều dày lớp phân tố thì ở dưới bảng tính tự động xuất hiện thêm các dòng (số dòng bằng chiều dày lớp đất/chiều dày lớp phân tố)
riêng lớp 1 thì số dòng = (chiều dày lớp 1 - hcm)/chiều dày lớp phân tố
Nhưng nếu làm tự động chèn dòng thì công thức có theo được không vậy???
Nhờ các bạn giúp cho, mình gà quá nên không biết làm sao cả, cảm ơn.
 

File đính kèm

Upvote 0
Vậy mình gửi file lên rồi nhờ bạn giúp dùm mình nhé
Ở sheet tính lún có các ô màu đỏ, chiều dày các lớp đất (lớp 1, lớp 2, lớp 3) và chiều dày các lớp phân tố hi có liên quan với nhau
ý mình muốn nếu nhập vào chiều dày các lớp đất, rồi chiều dày lớp phân tố thì ở dưới bảng tính tự động xuất hiện thêm các dòng (số dòng bằng chiều dày lớp đất/chiều dày lớp phân tố)
riêng lớp 1 thì số dòng = (chiều dày lớp 1 - hcm)/chiều dày lớp phân tố
Nhưng nếu làm tự động chèn dòng thì công thức có theo được không vậy???
Nhờ các bạn giúp cho, mình gà quá nên không biết làm sao cả, cảm ơn.
Bạn dùng tạm cái này vậy. Không biết có đúng ý Bạn chưa?
 

File đính kèm

Upvote 0
cái này cũng gần đúng ý mình rồi, nhưng có một số vấn đề như:
Số dòng của lớp 1 = (chiều dày lớp 1 - hcm)/ chiều dày lớp phân tố
Nhưng mình kiểm tra thử thì khi nhập chiều dày lớp, hcm, và chiều dày lớp phân tố thì lớp 1 cứ bị thiếu 1 dòng
Còn lớp 2 thì thiếu 2 dòng
Lớp 3 thì nằm dưới hàng tổng cộng luôn
Vì mình không biết cách sử dụng VBA như bạn nói nên chằng biết sửa như thế nào cả, bạn giúp mình với
 
Upvote 0
cái này cũng gần đúng ý mình rồi, nhưng có một số vấn đề như:
Số dòng của lớp 1 = (chiều dày lớp 1 - hcm)/ chiều dày lớp phân tố
Nhưng mình kiểm tra thử thì khi nhập chiều dày lớp, hcm, và chiều dày lớp phân tố thì lớp 1 cứ bị thiếu 1 dòng
Còn lớp 2 thì thiếu 2 dòng
Lớp 3 thì nằm dưới hàng tổng cộng luôn
Vì mình không biết cách sử dụng VBA như bạn nói nên chằng biết sửa như thế nào cả, bạn giúp mình với
Bạn xem lại file đính kèm nhé!
 

File đính kèm

Upvote 0
cảm ơn bạn minhcong đã giúp mình, nhờ bạn sửa lại dùm mình 1 chút, lớp thứ nhất số dòng =[(chiều dày lớp - hcm)/chiều dày lớp phân tố] + 1
mà cho mình hỏi, nếu làm như vậy thì công thức của các lớp sau đều là của lớp đầu tiên, phải chỉnh lại bằng tay, mình không mặc định được hả bạn
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn bạn minhcong đã giúp mình, nhờ bạn sửa lại dùm mình 1 chút, lớp thứ nhất số dòng =[(chiều dày lớp - hcm)/chiều dày lớp phân tố] + 1
mà cho mình hỏi, nếu làm như vậy thì công thức của các lớp sau đều là của lớp đầu tiên, phải chỉnh lại bằng tay, mình không mặc định được hả bạn
Cái chỗ chữ màu xanh ấy, Tôi không hiểu ý Bạn muốn nói như thế nào?
Mã:
Sub Chialop()
Dim i As Long, eR As Long
Dim L1 As Long, L2 As Long, L3 As Long
Application.ScreenUpdating = False
Range("A20:M65500").Clear
If Range("B12") = 0 Then Exit Sub
  [COLOR=red]L1 = Round((Range("G12") - Range("E4")) / Range("B12"), 0) + 1
    L2 = Round(Range("H12") / Range("B12"), 0)
      L3 = Round(Range("I12") / Range("B12"), 0)[/COLOR]
         K = L1 + L2 + L3
       With Range("19:19")
          If K > 2 Then .Copy .Offset.Resize(K - 1)
       End With
       With Range("B18")
            .Value = "L" & ChrW(7899) & "p 1"
          If Range("H12") <> "" Then
            .Copy .Offset(L1)
            .Offset(L1).Value = "L" & ChrW(7899) & "p 2"
            .Offset(L1).Borders(xlEdgeTop).LineStyle = xlContinuous
          End If
          If Range("I12") <> "" Then
            .Copy .Offset(L1 + L2)
            .Offset(L1 + L2).Value = "L" & ChrW(7899) & "p 3"
            .Offset(L1 + L2).Borders(xlEdgeTop).LineStyle = xlContinuous
          End If
       End With
  eR = Range("C65536").End(xlUp).Row
       With Range("B" & eR + 1 & ":L" & eR + 1)
            .Font.Bold = True
            .Borders(xlEdgeTop).LineStyle = xlDouble
            .Borders(xlEdgeBottom).LineStyle = xlDouble
            .Borders(xlEdgeLeft).LineStyle = xlDouble
            .Borders(xlEdgeRight).LineStyle = xlDouble
       End With
       With Range("B" & eR + 1 & ":K" & eR + 1)
            .Merge
            .HorizontalAlignment = xlCenter
            .FormulaR1C1 = "T" & ChrW(7892) & "NG C" & ChrW(7896) & "NG"
       End With
  With Range("L" & eR + 1)
       .Borders(xlEdgeLeft).LineStyle = xlContinuous
       .FormulaR1C1 = "=SUM(R[-" & (eR - 17) & "]C:R[-1]C)"
       .Offset(1).FormulaR1C1 = "=IF(R[-1]C<8,""Th" & ChrW(7887) & "a " & ChrW(273) & "k lún"",""Không th" & ChrW(7887) & "a " & ChrW(273) & "k lún"")"
       .Offset(1).Font.Bold = True
       .Offset(1).Font.ColorIndex = 3
  End With
  Application.ScreenUpdating = True
End Sub
Bạn để ý 3 dòng Tôi tô màu đỏ ở trong đoạn code trên, L1 (Lớp 1); L2 (Lớp 2); L3 (Lớp 3). Công thức như của Bạn thôi.
 

File đính kèm

Upvote 0
cảm ơn bạn, vấn đề về công thức thì mình đã hiểu vì sao rồi, do mình F4 khóa ô lại nên không nhảy thôi :D
Còn về số dòng của lớp 1 thì đã đúng rồi.
Mình cảm ơn bạn đã giúp đỡ mình, mà ô biểu tượng tạo bảng để click vào nếu khóa sheet thì có nhấn được ko bạn
 
Upvote 0
cảm ơn bạn, vấn đề về công thức thì mình đã hiểu vì sao rồi, do mình F4 khóa ô lại nên không nhảy thôi :D
Còn về số dòng của lớp 1 thì đã đúng rồi.
Mình cảm ơn bạn đã giúp đỡ mình, mà ô biểu tượng tạo bảng để click vào nếu khóa sheet thì có nhấn được ko bạn
Khóa sheet thì code không chạy được đâu nhé Bạn.
 
Upvote 0
vâng cảm ơn bạn, vậy nếu muốn thêm lớp đất vào, mình chỉ cần thêm dòng vào dưới đoạn code màu đỏ mà bạn đánh dấu ở trên là được đúng không bạn, ví dụ thêm 1 lớp L4
Mã:
L1 = Round((Range("G12") - Range("E4")) / Range("B12"), 0) + 1
L2 = Round(Range("H12") / Range("B12"), 0)
L3 = Round(Range("I12") / Range("B12"), 0)

L4 = Round(Range("ô đặt chiều dày L4") / Range("B12"), 0)
K = L1 + L2 + L3[/CODE]
 
Upvote 0
vâng cảm ơn bạn, vậy nếu muốn thêm lớp đất vào, mình chỉ cần thêm dòng vào dưới đoạn code màu đỏ mà bạn đánh dấu ở trên là được đúng không bạn, ví dụ thêm 1 lớp L4
L1 = Round((Range("G12") - Range("E4")) / Range("B12"), 0) + 1
L2 = Round(Range("H12") / Range("B12"), 0)
L3 = Round(Range("I12") / Range("B12"), 0)

L4 = Round(Range("ô đặt chiều dày L4") / Range("B12"), 0)
K = L1 + L2 + L3[/CODE]
K=L1+L2+L3+L4
Và bổ sung thêm 1 hàm IF nữa phía dưới hàm IF của lớp thứ 3
Mã:
[COLOR=red][COLOR=blue]If Range("Ô đặt chiều dày L4") <> "" Then
   .Copy .Offset([COLOR=red][COLOR=blue]L1 + L2+[/COLOR]L3[/COLOR])
   .Offset(L1 + L2+[COLOR=red]L3[/COLOR]).Value = "L" & ChrW(7899) & [COLOR=red]"p 4"[/COLOR]
   .Offset(L1 + L2+[COLOR=red]L3[/COLOR]).Borders(xlEdgeTop).LineStyle = xlContinuous
End IF[/COLOR][/COLOR]

 
Upvote 0
Web KT

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

Back
Top Bottom