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é!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)
Bạn dùng tạm cái này vậy. Không biết có đúng ý Bạn chưa?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 xem lại file đính kèm nhé!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
Cái chỗ chữ màu xanh ấy, Tôi không hiểu ý Bạn muốn nói như thế nào?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
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
Khóa sheet thì code không chạy được đâu nhé Bạn.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
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
K=L1+L2+L3+L4vâ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]
[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]