Hỏi về cách tổ hợp nội lực? (1 người xem)

Liên hệ QC

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

hoangnam_xd

Thành viên mới
Tham gia
8/11/08
Bài viết
7
Được thích
1
em có file excel.các bạn có thể giúp mình tổ hợp nó.Khi Kích nút tổ hợp thì:Nếu cột "C" là chữ "DEAD" và cột "A" cùng phần tử thì từ max của cột E xác định được hàng.Copy qua cột ben tương ứng nhưng chi cột phần tử(A), Loại(C),P(E), M2(I), M3(J).qua ô bên tương ứng theo thứ tự.+-+-+-+
Em xin cảm ơn các bác nhiều.
 
Lần chỉnh sửa cuối:
em có file excel.các bạn có thể giúp mình tổ hợp nó.Khi Kích nút tổ hợp thì:Nếu cột "C" là chữ "DEAD" và cột "A" cùng phần tử thì từ max của cột E xác định được hàng.Copy qua cột ben tương ứng nhưng chi cột phần tử(A), Loại(C),P(E), M2(I), M3(J).qua ô bên tương ứng theo thứ tự.+-+-+-+
Em xin cảm ơn các bác nhiều.
Chắc mỗi mình tôi hiểu được đề bài vì đã từng làm một bài tương tự kiểu này. Bạn xem có gì thiếu hoàn thiện nốt, Tôi không dùng VBA, làm hoàn toàn bằng công thức
 

File đính kèm

Upvote 0
cảm ơn bạn dosnet nhưng mình muốn có code vb de tổ hợp nội lực.Nhằm lọc dữ liệu
-Lấy (max P ở cột E) thỏa điều kiện :cùng phần tử ở cột A và cùng là chữ "DEAD" ở cột C .Nhưng chỉ lấy M2 và M3, phần tử(A), loại(D) tương ứng đưa qua bên cạnh.
 
Upvote 0
cảm ơn bạn dosnet nhưng mình muốn có code vb de tổ hợp nội lực.Nhằm lọc dữ liệu
-Lấy (max P ở cột E) thỏa điều kiện :cùng phần tử ở cột A và cùng là chữ "DEAD" ở cột C .Nhưng chỉ lấy M2 và M3, phần tử(A), loại(D) tương ứng đưa qua bên cạnh.
Thì mình đã lọc cho cậu tại sheet Gia tri loc rồi đó. Ứng với mỗi Frame ở cột A, lọc Max P ở cột E. Đã lọc tự động khi có thêm dữ liệu mới ở sheet Noi Luc
Nếu chưa đúng ý, thể bạn đưa ra ví dụ một vài phần tử đã được lọc theo ý cậu. mình sửa lại cho. Thân !
 
Upvote 0
Mình gửi lại file nhờ bạn giúp mình nha!!

mình gửi lại bạn vi dụ của bài tập tổ hợp nội lực đấy.Bạn xem giúp mình nha. Mình đau đầu với bài này quá. MÌnh muốn viết trên VB để có tính chuyên nghiệp hơn ấy mà.)*&^)
 
Lần chỉnh sửa cuối:
Upvote 0
mình gửi lại bạn vi dụ của bài tập tổ hợp nội lực đấy.Bạn xem giúp mình nha. Mình đau đầu với bài này quá. MÌnh muốn viết trên VB để có tính chuyên nghiệp hơn ấy mà.)*&^)
Chào bạn, mình sẽ làm giúp bạn với điều kiện bạn làm rõ thêm !
1- Trong file bạn đưa ví dụ :
Mỗi Frame bạn cần lọc ra mấy dòng (Frame 37 chẳng hạn), như VD bạn đưa ra là mỗi Frame bạn lọc ra 03 dòng, vậy điều kiện lọc 2 dòng (maxmin) nữa thì sao ?
- Pmax bạn đưa ra không đúng, đó là Pmin thì đúng hơn.
-Frame 247 (không tìm được Pmax thì lấy cái nào)?
Bạn nên nhớ để lọc bất cứ một hàng nào cũng phải có điều kiện, ví dụ mình đã hiểu, ứng với mỗi Frame thì lấy 01 Pmax, và lọc các giá trị M1 và M2 tương ứng. Bạn giải thích rõ thì sẽ đỡ mất thời gian ! Thân !
-----------
Lọc được để sử dụng là tốt lắm rồi..chuyên nghiệp tính sau --=0
 
Lần chỉnh sửa cuối:
Upvote 0
Khi tổ hợp thì đối với cột thì thể hiện 1 hàng, đối với dầm tyhì thể hiện 3 hàng.Trong cùng 1 phần tử mình chia làm 2 nhóm
+DEAD 1 nhóm
+MAX, Min: 1 nhóm
* Kích nút Pmax-M2,M3 tương ứng. Code VB sẽ làm việc như sau:
- Nếu cùng là phần tử(cột A) và cột D là chữ "Cot" thì:
+So sánh cột C có chữ "DEAD" (lấy ABS).Copy Pmax cột E tìm được đến Pdh ở cột V bên cạnh.Và M2,M3 ở cột I và J tương ứng với Pmax ở trên copy qua M2dh và M3dh ở cột W và X.
+Với nhóm Max,Min ta cũng tìm Pmax của nhóm này (lấy ABS).Sau đó lấy từ cột D đến J copy sang cột O đến U.
+Cột M bằng cột B tương úng với vị trí Pmax của nhóm max,min.
+Cột N là max của cột B ứng phần tử đang xét.

-Nếu cột D là "Dam" thì cũng chia làm 2 nhóm điều kiện như phần cột:
+Với nhóm Cột C là “DEAD” thì tìm Pmax (lấy ABS). Copy cột E tìm được đến Pdh ở cột V bên cạnh. Và M2,M2 ở cột I và J tương ứng với Pmax copy qua M2dh và M3dh ở cột W và X.Copy cả 3 dòng: phải,giữa,trái.
+Với nhóm Max,Min thì
+Tại Trái (luôn là tại 0.00): Tìm Pmax (ABS) tại mặt cắt 0.00 của max và min cột C.sau đó copy từ D đến J sang cột P đến U.
+ Tại Phải (luôn là tại mặt cắt cuối cùng): Tìm Pmax (ABS) tại mặt cắt cuối cùng của max và min cột C.sau đó copy từ D đến J sang cột P đến U.
+ + Tại Giữa: Tìm Pmax (ABS) cả cột của max và min cột C.sau đó copy từ D đến J sang cột P đến U.
Chú ý: Trong quá trình so sánh P cột E: Nếu P max giống nhau thì lấy Pmax nào có tổng ABS của M2,M3 nào lớn hơn thì chọn.

Mình quên gửi file cho ban chứ! Đây là file ví dụ.Bạn xem thử nha **~**
 
Lần chỉnh sửa cuối:
Upvote 0
MÌNH ĐÃ LÀM XONG PHẦN CỘT NHƯNG TỐC ĐỘ XỬ LÝ CÒN CHẬM QUÁ VÀ PHẦN L KHÔNG ĐÚNG NỮA.MÌNH NHỜ ANH EM TRÊN DIỄN ĐÀN SỮA CODE GIÚP MÌNH NHA:
Private Sub CommandButton1_Click()
Dim i, b, curDam, k, curRow, curRowM, copytoRow, copytoRowM, q, crMta, crMtd, crMpa, crMpd, crMna, crMnd As Integer
Dim sodong, curP, curPtmp, curPM, curPtmpM, curDL, L, Mta, Mpa, Mna, Mtd, Mpd, Mnd As Double
Dim a, a1, addP, a2, a3, a4 As String
Dim Dam(0 To 100) As Integer
sodong = 4
b = 0
Do While Cells(sodong, "C") <> ""
sodong = sodong + 1
Loop
sodong = sodong
MsgBox "So dong = " & sodong, vbOKOnly
Range("L4" & ":X" & sodong).Clear
Cells(1, "L") = "TABLE: So lieu Xu ly Pmax - M2.tu,M3.tu"
Cells(2, "L") = "Frame"
Cells(2, "M") = "Station"
Cells(2, "N") = "L"
Cells(2, "O") = "LOAI"
Cells(2, "P") = "P"
Cells(2, "Q") = "V2"
Cells(2, "R") = "V3"
Cells(2, "S") = "T"
Cells(2, "T") = "M2"
Cells(2, "U") = "M3"
Cells(2, "V") = "Ndh"
Cells(2, "W") = "Mdh"
Cells(3, "L") = "Text"
Cells(3, "M") = "M"
Cells(3, "P") = "daN"
Cells(3, "Q") = "daN"
Cells(3, "R") = "daN"
Cells(3, "S") = "daN-M"
Cells(3, "T") = "daN-M"
Cells(3, "U") = "daN-M"
Cells(3, "V") = "daN"
Cells(3, "W") = "daN-M"
L = 0
curP = Range("E4")
curRow = 4
curRowM = 4
copytoRow = 3
copytoRowM = 3
For k = 4 To sodong
a = Addr(1, k - 0)
a1 = Addr(1, k - 1)
a3 = Addr(3, k - 0)
a4 = Addr(3, k - 1)
addP = Addr(5, k - 0)
curPtmp = Range(addP).Value
If Range("B" & k).Value > L Then L = Range("B" & k).Value
If Left(Range("D" & k).Value, 1) = "C" Then
If Range(a).Value = Range(a1).Value Then
If Left(Range("C" & k).Value, 1) = "M" Then
If Abs(curP) < Abs(curPtmp) Then
curP = curPtmp
curRow = k
End If
ElseIf Left(Range("C" & k).Value, 1) = "D" Then
If Abs(curPM) < Abs(curPtmpM) Then
curPM = curPtmpM
curRowM = k
End If
End If
Else
curP = Range("E" & k)
curPM = Range("E" & k)
curRow = k
curRowM = k
copytoRow = copytoRow + 1
copytoRowM = copytoRowM + 1
End If
Range("D" & curRow & ":J" & curRow).Copy Range("O" & copytoRow)
Range("E" & curRowM).Copy Range("V" & copytoRowM)
Range("I" & curRowM & ":J" & curRowM).Copy Range("W" & copytoRowM)
Range("N" & copytoRow).Value = L
Range("A" & curRow & ":B" & curRow).Copy Range("L" & copytoRow)
End If
Next k
End Sub
@$@!^%
 
Lần chỉnh sửa cuối:
Upvote 0
Quá "shock" với mớ điều kiện bạn đưa thêm, so với ban đầu thì khó gấp nhiều lần...+-+-+-++-+-+-++-+-+-+
Thử làm riêng phần lọc CỘT, bạn xem thử....đau đầu bài này quá, sao nhiều điều kiện vậy trời...
 

File đính kèm

Upvote 0
Cảm ơn bạn DOSNET!!!

Hihihi!!!Mình thực sự cảm ơn bạn DOSNET đã giúp mình bài toán này. Thậa sự mình cũng như bạn vậy đang đau đầu với bài toán này.Mình cũng đã làm chạy được phần cột rồi nhưng tốc độ xử lý chậm quá.Nếu vậy với cả ngàn phần tử thì không kham nổi rồi.Mình gửi file cho bạn xem thử nha)(&&@@
 
Lần chỉnh sửa cuối:
Upvote 0
ngày xưa mình cũng từng viết code tổ hợp nội lực cho bạn mình ----> mình đưa ra một số kinh nghiệm sau :: --- Nếu kết quả xuất ra từ sap2000 ---> export kết quả ra file excle hoặc file access
---- Dùng ADODB kết nối với file export ---> đưa toàn bộ kết quả vào một mảng arr()
----- Sử dụng Dictionary để xửa lý và lọc trong Arr()
----> với mô hình này mình nghĩ là nó được tự động tương đối nhiều ,
và bạn có thể lọc theo bao nhiêu điều kiện cũng được
 
Upvote 0

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

Back
Top Bottom