Hàm nối ô phép tính.. (4 người xem)

Liên hệ QC

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

888x888x888

Thành viên mới
Tham gia
16/10/13
Bài viết
14
Được thích
1
Mình làm bên xây dựng hay làm bảng sơ toán khối lượng dạng như hình dưới,
Cột G,H sẽ là số liệu mình khai báo đầu vào, Cột D sẽ là công thức tính các số liệu với nhau
Mình thường làm công thức kiểu ghép các ô và phép tính như ô D7 hình dưới (hoặc làm hàm Concatenate)
Nhưng có nhiều hạng mục gồm nhiều số nhân chia phức tạp với nhau thì hàm rất dài và làm rất lâu.
Mình muốn làm 1 cái VBA ví dụ như =DT((H7+H8)*H9*H10) thì nó sẽ ra (15+20)*50*2.
Tóm lại là mình muốn làmđơn giản hoá hàm ghép ô của exel (bỏ các ký tự như "&)
Các bác giúp mình đc ko ạ, thank all
excel.jpg
 
Lần chỉnh sửa cuối:
Dùng từ đại diện rồi Replace 4 lần là xong.

Ví dụ: (dai+rong)*cao*solg
 
Mình làm bên xây dựng hay làm bảng sơ toán khối lượng dạng như hình dưới,
Cột G,H sẽ là số liệu mình khai báo đầu vào, Cột D sẽ là công thức tính các số liệu với nhau
Mình thường làm công thức kiểu ghép các ô và phép tính như ô D7 hình dưới (hoặc làm hàm Concatenate)
Nhưng có nhiều hạng mục gồm nhiều số nhân chia phức tạp với nhau thì hàm rất dài và làm rất lâu.
Mình muốn làm 1 cái VBA ví dụ như =DT((H7+H8)*H9*H10) thì nó sẽ ra (15+20)*50*2.
Các bác giúp mình đc ko ạ, thank all
View attachment 261055
Bữa thấy cái addin diengiaicongthuc ở đâu đó nên copy về vậy mặc dù không dùng. Giờ thấy cái này có lẽ giúp được bạn nên gửi bạn dùng thử. Lưu addin xong thì dùng công thức tại D7 = Diengiai(E7)
 

File đính kèm

Dùng từ đại diện rồi Replace 4 lần là xong.

Ví dụ: (dai+rong)*cao*solg
đây là mình ví dụ thì đơn giản vậy thôi, chứ thực tế thì rất nhiều dữ liệu đầu vào chứ không phải 4 ô như trên, ví dụ tính thể tích 1 cấu kiện có rất nhiều hình gộp lại như hình tròn, hình vuông, tam giác ....
Bài đã được tự động gộp:

Bữa thấy cái addin diengiaicongthuc ở đâu đó nên copy về vậy mặc dù không dùng. Giờ thấy cái này có lẽ giúp được bạn nên gửi bạn dùng thử. Lưu addin xong thì dùng công thức tại D7 = Diengiai(E7)
hàm hơi ngược với cách tính của mình là cột E sẽ là kết quả của cột D
Nhưng cũng khá hay mình sẽ tham khảo
 
đây là mình ví dụ thì đơn giản vậy thôi, chứ thực tế thì rất nhiều dữ liệu đầu vào chứ không phải 4 ô như trên, ví dụ tính thể tích 1 cấu kiện có rất nhiều hình gộp lại như hình tròn, hình vuông, tam giác ....
Bạn ví dụ thế nào thì giúp thế ấy thôi, chứ chẳng có ai đang từ đơn giản lại đi chuyển thành phức tạp đâu bạn.
 
Túm lại tới đây thì không biết thớt muốn cái gì.
 
Là từ cái diễn giải đó tính ra kết quả ấy hả? Nếu vậy thì nghiên cứu đặt defined name với Evaluate
Không, hàm đó mình có rồi, mình muốn từ số liệu đầu vào ra cái diễn giải cơ
Bạn ví dụ thế nào thì giúp thế ấy thôi, chứ chẳng có ai đang từ đơn giản lại đi chuyển thành phức tạp đâu bạn.
chắc bạn chưa hiểu ý mình lắm
 
Túm lại tới đây thì không biết thớt muốn cái gì.
Bác thấy cái ô D7 mình đang để hàm ="("&H7&"+"&H8&")*"H9&"*"H10 không ạ
Giờ mình muốn nó thành hàm đơn giản hơn ví dụ như =DG((H7+H8)*H9*H10 để nó trả về giá trị (15+20)*50*2
Kiểu như là làm đơn giản hoá hàm ghép các ô của exel với nhau ấy ạ
Bài đã được tự động gộp:

Từ cột G và cột H tính ra cột E, rồi cột D lấy công thức cột E làm diễn giải? Đúng vậy chưa? Chưa thì diễn đạt cho dễ hiểu
Từ cột H tính ra cột D, rồi từ cột D tính ra cột E
(Từ cột D tính ra cột E mình đã có hàm rồi) mình đang cần cột H tính ra cột D
 
Bác thấy cái ô D7 mình đang để hàm ="("&H7&"+"&H8&")*"H9&"*"H10 không ạ
Giờ mình muốn nó thành hàm đơn giản hơn ví dụ như =DG((H7+H8)*H9*H10 để nó trả về giá trị (15+20)*50*2
Kiểu như là làm đơn giản hoá hàm ghép các ô của exel với nhau ấy ạ
Mình có thấy chứ. Và cách làm ở bài #2 đó.
 
Bác thấy cái ô D7 mình đang để hàm ="("&H7&"+"&H8&")*"H9&"*"H10 không ạ
Giờ mình muốn nó thành hàm đơn giản hơn ví dụ như =DG((H7+H8)*H9*H10 để nó trả về giá trị (15+20)*50*2
Kiểu như là làm đơn giản hoá hàm ghép các ô của exel với nhau ấy ạ
Bài đã được tự động gộp:


Từ cột H tính ra cột D, rồi từ cột D tính ra cột E
(Từ cột D tính ra cột E mình đã có hàm rồi) mình đang cần cột H tính ra cột D
Ơ bạn ngộ vậy, sao không tính từ cột H sang cột E trước, rồi từ cột E dùng hàm diengiai sang cột D????
 
Mình có thấy chứ. Và cách làm ở bài #2 đó.
thì mình nói là đây là hàm mình ví dụ đơn giản thì có thể làm thế, còn những cái phức tạp nhiều dữ liệu đầu vào thì ko làm thế đc
Ơ bạn ngộ vậy, sao không tính từ cột H sang cột E trước, rồi từ cột E dùng hàm diengiai sang cột D????
Thì mình thấy nó hơi ngược, vì theo thứ tự là phải từ diễn giải "D" rồi sẽ tính ra kết quả "E", nhưng mình sẽ tham khảo thêm cách như bạn nói
 
Mười ba bài rồi vẫn chưa thấy đâu. Mới thấy mình nói suông vậy.
Mình nói bạn ko hiểu à. Sao bạn cứ quan tâm cái ko cần thiết vậy nhỉ. Vấn đề ở đây ko phải dữ liệu đầu vào. Cột diễn giải ko theo 1 công thức nhất định nào cả. Ví dụ như hạng mục sơn, dài x rộng rồi lại trừ cửa sổ, cửa ra vào, rồi cộng lanh tô... mà đâu phải bức tường nào cũng giống nhau. Rồi cái nhà có tỷ hạng mục khác nữa chứ.
Vấn đề cốt lõi là mình muốn đơn giản hoá cái ghép ô trong excel. Để khỏi phải làm dài dòng như cái hàm ở ô D7 kia
 
Mình làm bên xây dựng hay làm bảng sơ toán khối lượng dạng như hình dưới,
Cột G,H sẽ là số liệu mình khai báo đầu vào, Cột D sẽ là công thức tính các số liệu với nhau
Mình thường làm công thức kiểu ghép các ô và phép tính như ô D7 hình dưới (hoặc làm hàm Concatenate)
Nhưng có nhiều hạng mục gồm nhiều số nhân chia phức tạp với nhau thì hàm rất dài và làm rất lâu.
Mình muốn làm 1 cái VBA ví dụ như =DT((H7+H8)*H9*H10) thì nó sẽ ra (15+20)*50*2.
Tóm lại là mình muốn làmđơn giản hoá hàm ghép ô của exel (bỏ các ký tự như "&)
Các bác giúp mình đc ko ạ, thank all
View attachment 261055
Mã:
Function DT(ByVal rng As Variant) As String
  Dim S, Arr(), CongThuc$, tmp$, tt$, j&, i&
 
  tt = "()+-*/"
  ReDim Arr(2 To 8)
  If TypeName(rng) = "Range" Then
    CongThuc = Mid(rng.Formula, 2, 500)
  Else
    CongThuc = rng
  End If
  tmp = Mid(CongThuc, 2, Len(CongThuc))
  For j = 1 To 6
    tmp = Replace(tmp, Mid(tt, j, 1), " ")
  Next j
  S = Split(Application.Trim(Replace(tmp, "$", "")), " ")
  For j = 0 To UBound(S)
    n = Len(S(j))
    If UBound(Arr) < n Then ReDim Preserve Arr(2 To n)
    Arr(n) = Arr(n) & "," & S(j)
  Next j
  For j = UBound(Arr) To 2 Step -1
    S = Split("," & Arr(j), ",")
    For i = 2 To UBound(S)
      CongThuc = Replace(CongThuc, S(i), Range(S(i)).Value)
    Next i
  Next j
  DT = CongThuc
End Function
Có 2 cách dùng hàm DT
1/ có công thức Khối lượng ô E7: =(H7+H8)*H9+H11
D7 =DT(E7)
2/ Nhập trực tiếp, tham số phải nằm trong " "
D8 =DT("(H7+H8)*H9+H11")
 

File đính kèm

Cột diễn giải ko theo 1 công thức nhất định nào cả
Bạn đang cần cái gọi là "tự động" cho cột diễn giải. Nhưng bạn lại nói nó không theo một công thức nhất định nào, thế rồi theo bạn cái quy luật chung chung để làm việc này là thế nào?? (Tức lấy ô nào nhân ô nào cộng ô nào cho tất cả trường hợp)
 
@Nhattanktnn : Quy luật chung để tính khối lượng trong XD là không có, có rất đa dạng cách tính để ra khối lượng.
@các thành viên: Phần mềm Dự toán (via dụ G8, GXD,...) có thể tính được khối lượng chi tiết từ các biểu thức đa dạng không có quy luật chung. Rồi tổng hợp các khối lượng chi tiết thành khối lượng tổng của 1 công tác.
 
Cái này chỉ cần định dạng cột D thành dạng text là được mà chủ thớt?
 
Web KT

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

Back
Top Bottom