Dò tìm hệ số trong tổ hợp (1 người xem)

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

Nguyen.vuhoa1986

Thành viên mới
Tham gia
21/11/14
Bài viết
12
Được thích
3
Chào các anh (chị) trong diễn đàn,
Em đang làm một bài toán về dò tìm các hệ số trong tổ hợp dựa vào các mã trong tổ hợp mà chưa biết cách làm, nhờ các Anh chị giúp em với ạ.
Em đã làm mẫu ví dụ của 3 tổ hợp và cho ra kết quả kế bên trong file đính kèm.
Em xin chân thành cảm ơn!!
 

File đính kèm

Chào các anh (chị) trong diễn đàn,
Em đang làm một bài toán về dò tìm các hệ số trong tổ hợp dựa vào các mã trong tổ hợp mà chưa biết cách làm, nhờ các Anh chị giúp em với ạ.
Em đã làm mẫu ví dụ của 3 tổ hợp và cho ra kết quả kế bên trong file đính kèm.
Em xin chân thành cảm ơn!!
Dùng thử hàm tự tạo xem sao.
 

File đính kèm

--LEFT($A3;FIND("*";$A3)-1) Thay 1.35 bởi 1,35
 
Vấn đề này dùng Vlookup và Match là quá ổn rồi
 

File đính kèm

Dùng thử hàm tự tạo xem sao.
Thank, nhưng có vấn đề phát sinh thêm là:
Có một vấn đề là:
VD: 1.35*(BL+DL+FP+PE+POL+EE+EOL+AF)+1.0*(VX+VXE)-0.3*(VY+VYE)
có dấu "-" đằng trước thì hệ số của nó phải âm (VY= -0.3, VYE = -0.3).
Trong hàm trên nếu trong tổ hợp 0.3*(VY+VYE) mà thay bằng 0.3*(VY+0.5*VYE) thì hệ số lại lấy là 0.5 như vậy chưa đúng yêu cầu mà hệ số đúng phải là (VY = 0.3, VYE = 0.3*0.5)
 
Lần chỉnh sửa cuối:
Hihi, với dữ liệu ban đầu thôi, bi giờ bạn thêm nhiều trường hợp nên bài toán thành ...."hơi hơi" phức tạp rồi
Bạn nên đưa tất cả các trường hợp lên xem sao
Thân
Dạ file đây Bác, bác xem chiến giúp em với, em nghĩ nhưng chưa được
 

File đính kèm

Thank, nhưng có vấn đề phát sinh thêm là:
Có một vấn đề là:
VD: 1.35*(BL+DL+FP+PE+POL+EE+EOL+AF)+1.0*(VX+VXE)-0.3*(VY+VYE)
có dấu "-" đằng trước thì hệ số của nó phải âm (VY= -0.3, VYE = -0.3).
Trong hàm trên nếu trong tổ hợp 0.3*(VY+VYE) mà thay bằng 0.3*(VY+0.5*VYE) thì hệ số lại lấy là 0.5 như vậy chưa đúng yêu cầu mà hệ số đúng phải là (VY = 0.3, VYE = 0.3*0.5)
Phát sinh thêm thì làm lại.
Bạn xem thử đúng yêu cầu chưa.
 

File đính kèm

Lần chỉnh sửa cuối:
Tạm thời làm theo file trên, mình đề nghị bạn thống nhất cách nhập, dù chỉ 1 mã cũng phải có dấu ngoặc đơn đóng & mở ( thí dụ cell A3, A4 với mã WX ), cái này để .....dễ viết code thôi. Hihi
Mình nghi nghi bài này còn rối nhiều lắm. Híc
Thân
 

File đính kèm

Phát sinh thêm thì làm lại.
Bạn xem thử đúng yêu cầu chưa.

góp thêm một một đoạn code
Mã:
Function Myreplace(st1, st2 As Range)
    Dim objReg As Object
  
    Set objReg = CreateObject("vbscript.regexp")
    objReg.Pattern = "[^\d*/()+-.]"
    objReg.Global = True
    Application.Calculation = False
    st = Replace(st1, st2, 1)
    st = objReg.Replace(Trim(st), 0)
  Application.Calculation = True
  
Myreplace = Evaluate(st)
    Set objReg = Nothing
End Function
B2=Myreplace($A2,B$1)[/code]
kéo qua phải, kéo xuống
 
góp thêm một một đoạn code
Mã:
Function Myreplace(st1, st2 As Range)
    Dim objReg As Object
  
    Set objReg = CreateObject("vbscript.regexp")
    objReg.Pattern = "[^\d*/()+-.]"
    objReg.Global = True
    Application.Calculation = False
    st = Replace(st1, st2, 1)
    st = objReg.Replace(Trim(st), 0)
  Application.Calculation = True
  
Myreplace = Evaluate(st)
    Set objReg = Nothing
End Function
B2=Myreplace($A2,B$1)[/code]
kéo qua phải, kéo xuống
Cái này bị sai từ dấu ngoặc thứ hai trở đi.
 
Tạm thời làm theo file trên, mình đề nghị bạn thống nhất cách nhập, dù chỉ 1 mã cũng phải có dấu ngoặc đơn đóng & mở ( thí dụ cell A3, A4 với mã WX ), cái này để .....dễ viết code thôi. Hihi
Mình nghi nghi bài này còn rối nhiều lắm. Híc
Thân
Thanks Bác nhiều, để cháu nghiên cứu code của Bác xem thế nào!!!
 
Cái này bị sai từ dấu ngoặc thứ hai trở đi.

nó không phân biết được "VX" và "VXE" cũng như "VY" và "VYE"

sửa code lại một chút
Mã:
Function Myreplace(rng1, rng2 As Range)
    Dim objReg As Object, st, st1, st2 As String
  st1 = Trim(rng1)
  st2 = Trim(rng2)
    Set objReg = CreateObject("vbscript.regexp")
    objReg.Pattern = "[^\d*/()+-.]"
    objReg.Global = True
    Application.Calculation = False
    st = Replace(st1, st2, 1, , 1)
    st = Evaluate(objReg.Replace(Trim(st), 0))
  Application.Calculation = True
  
Myreplace = st
    Set objReg = Nothing
End Function

mà sao code mình giống bạn Phuocam quá ta.......hihihhihiih.........trùng ý tưởng chứ ko có đạo nhạc của bạn nha.........hhehehehehhe
 
nó không phân biết được "VX" và "VXE" cũng như "VY" và "VYE"
sửa code lại một chút
Mã:
Function Myreplace(rng1, rng2 As Range)
    Dim objReg As Object, st, st1, st2 As String
  st1 = Trim(rng1)
  st2 = Trim(rng2)
    Set objReg = CreateObject("vbscript.regexp")
    objReg.Pattern = "[^\d*/()+-.]"
    objReg.Global = True
    Application.Calculation = False
    st = Replace(st1, st2, 1, , 1)
    st = Evaluate(objReg.Replace(Trim(st), 0))
  Application.Calculation = True
  
Myreplace = st
    Set objReg = Nothing
End Function
mà sao code mình giống bạn Phuocam quá ta.......hihihhihiih.........trùng ý tưởng chứ ko có đạo nhạc của bạn nha.........hhehehehehhe
Trong tổ hợp có những mã vừa chuỗi vừa số như PTL2,PTL3 thì code trên chạy không chính xác.
Thân! Chúc bạn luôn vui vẻ!
 

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

Back
Top Bottom