QUẢNG CÁO ĐẦU TRANG

Collapse

Thông báo

Collapse
No announcement yet.

Mỗi tuần một hàm trong Excel!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Ðề: Mỗi tuần một hàm trong Excel!

    http://www.elcomsoft.com/prs.html
    pass: AOPRP-COMM-XXDNN-27747-BHJGY-55343

    Ghi chú


    • Ðề: Mỗi tuần một hàm trong Excel!

      cam on cac huynh da post len cac ham excel nhe,tui em hoc hoi duoc nhieu lam,

      Ghi chú


      • Ðề: Mỗi tuần một hàm trong Excel!

        Nguyên văn bởi ttkh
        Xin chỉ giúp. Tôi gặp vấn đề sau : Khi tạo một macro
        Ví dụ
        A1 =6
        B1 = 7
        C1 = 8
        D1 = A1+B1
        ENTER
        Thì ta có macro
        Sub Macro1()
        '
        ' Macro1 Macro
        ' Macro recorded 9/2/2005 by user02
        '

        '
        ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
        Range("D2").Select
        End Sub
        Vậy thì bằng cách nào để cho "Range("D2").Select "không phải là D2, vì khi thực hiện macro này thì kết thúc lệnh ô hiện hành là ô D2 ( cho dù vị trí thực hiện nào đi nữa).
        Có nghĩa là ta phải thay đổi dòng Range("D2").Select "như thế nào để nó không phải là địa chỉ tuyệt đối như vậy. Ví dụ thực hiện lệnh ở ô D3 (sử dụng macro trên )thì kết thúc lệnh ô hiện hành ở D4, chứ không phải là D2
        Nếu bạn không muốn nó select tại địa chỉ tuyệt đối là "D2" thì
        1- Bỏ dòng sau đây đi Range("D2").Select
        2- Thay giá trị "D2" bằng giá trị khác qui định trong biến
        Ví dụ:
        Dim AddCell as long
        AddCell=3
        Range("D" & AddCell ).Select

        Chúc bạn thành công
        Công ty Cổ phần kỹ thuật công trình- Thương mại C.N.C.C
        Email : cncc.jsc@gmail.com

        Ghi chú


        • Ðề: Mỗi tuần một hàm trong Excel!

          chào các bác!
          Em rất muốn học VBA cho thằng Excel này
          thấy các bác post lên nhiều nhiều em thật sự rất vui
          Em có một thỉnh cầu nho nhỏ này:
          Đằng nào các bác cũng dành thời gian viết bài và post lên, vậy trong khi viết hàm nào đó các bác có thể giải thích rõ hơn một chút được không, để cho anh em nào (như em chẳng hạn) muốn đọc code cũng hiểu được nhiều, rất cảm ơn các bác

          Ghi chú


          • Ðề: Mỗi tuần một hàm trong Excel!

            PMXD thân mến
            Tôi có đọc 2 hàm :Tra A,B,D và tính bản sàn
            Thế thì phức tạp quá.Hôm sau rãnh tôi post lên các bạn cho ý kiến nhé:
            1/ Hàm tra A,B,D toằn bộ có công thức rồi chỉ dùng excel thông thường là tính thẳng ra A,B,D và Rtc luôn
            2/ Bản sàn thì dùng một chút công thức nội suy thì ra luôn nội lực
            Đâu cần phức tạp đến thế

            Ghi chú


            • Ðề: Mỗi tuần một hàm trong Excel!

              Anh có thể tham khảo bài này:
              Generating Smooth Curves in Charts

              Ghi chú


              • Ðề: Mỗi tuần một hàm trong Excel!

                Nguyên văn bởi PhanTuHuong
                Tú ơi!

                Anh rất cám ơn ông em. Nhưng anh muốn biết thuật toán của Smoothed line. Hình như nó cài theo dạng *.xla nên anh kô thể xem đc, em có cách naog giúp anh đc ko vẩy
                Đó là Excel 4.0, anh muốn xem thì vào Properties của ThisWorkbook đặt IsAddin=False, nhưng trong đó cũng không có thuật toán như anh cần đâu.
                Smooth line của Excel là dạng đồ thị bậc 3 đi qua các điểm kiểm soát, anh có thể xem nhiều dạng làm trơn khác trong các sách nói về Kỹ thuật đồ họa (Hermite, Bezier...). Em có 1 ít tài liệu nói về phần này, anh có thể tham khảo nhưng nó chưa thật chuẩn so với Smooth line của Excel.
                Attached Files

                Ghi chú


                • Ðề: Mỗi tuần một hàm trong Excel!

                  Em tìm được cái này khá đúng với Smooth data của Excel, có thể dùng được.

                  ------------------------------------
                  <tiện thể Test thử attach picture xem được không >
                  Attached Files

                  Ghi chú


                  • Ðề: Mỗi tuần một hàm trong Excel!

                    Các bác cho em hỏi bên VB một chut (em mới bắt đầu học nên còn kém lắm,các bác thông cảm nhé)
                    1.Làm thế nào để xuất kết quả ra dưới dạng.txt ,dưới dạng.xls?
                    2.Có phải VB không thể tạo được cơ sở dữ liệu (Đơn giản như 1 bảng tra chẳng hạn) mà bắt buộc phải dùng Access không?Kết nối như thế nào?

                    Ghi chú


                    • Ðề: Mỗi tuần một hàm trong Excel!

                      Bác PMXD hàm nội suy của bác gặp sự cố rồi (không biết có phải thế không!?). Mình nêu ra trường hợp nhé: khi bác nhập giá trị "Cot" là các số nằm trong cột đó (VD:cột là dãy số:0,1; 0,25; 0,5;0,75;1 thì nhập chính xác số có trong cột là 0,25) và khi nhập giá trị "Hang" là số không có trong Hàng đó (VD: Hàng có dãy 1;2;3;4 mà nhập số cần nội suy la 2,1) thì kết quả trả về 0. Đây là điều bất tiện trong phương pháp nội suy vì không đáp ứng tính bất kì của một hàm số nội suy. Mong Bác có câu trả lời giụp Nhân đây mình xin gửi lại file Bác đã post lên nhưng mình đã sửa giá trị tương ứng với trường hợp nêu trên để Bac tham khảo để giải quyết nhanh.
                      Attached Files

                      Ghi chú


                      • Ðề: Mỗi tuần một hàm trong Excel!

                        Mình đã xem lại code của PMXD và nhận thấy thừa ra 1 đoạn ở đầu, bạn dùng thử xem sao:
                        Function TraBang2Chieu(ByVal GiaTriCot, ByVal GiaTriHang, VungChon As Range)
                        Dim i As Long, j As Long
                        Dim TangAnPha
                        Dim NoiSuy1 As Double, NoiSuy2 As Double
                        For i = 1 To UBound(VungChon.Value, 2)
                        If (GiaTriCot - VungChon(1, i)) * (GiaTriCot - VungChon(1, i + 1)) <= 0 Then
                        For j = 1 To UBound(VungChon.Value, 1) - 1
                        If (GiaTriHang - VungChon(j, 1)) * (GiaTriHang - VungChon(j + 1, 1)) <= 0 Then

                        TangAnPha = (VungChon(j, i + 1) - VungChon(j, i)) / (VungChon(1, i + 1) - VungChon(1, i))
                        NoiSuy1 = VungChon(j, i) + (GiaTriCot - VungChon(1, i)) * TangAnPha

                        TangAnPha = (VungChon(j + 1, i + 1) - VungChon(j + 1, i)) / (VungChon(1, i + 1) - VungChon(1, i))
                        NoiSuy2 = VungChon(j + 1, i) + (GiaTriCot - VungChon(1, i)) * TangAnPha

                        TangAnPha = (NoiSuy2 - NoiSuy1) / (VungChon(j + 1, 1) - VungChon(j, 1))
                        TraBang2Chieu = NoiSuy1 + (GiaTriHang - VungChon(j, 1)) * TangAnPha
                        GoTo Thoat:
                        End If
                        Next j
                        End If
                        Next i
                        Thoat:
                        End Function
                        Tuy nhiên mình nhận thấy cách tra bảng này chỉ thực hiện nội suy thì được thôi, chứ ngoại suy thì not OK.
                        Last edited by vietha209; 04-04-2007, 02:47 PM.

                        Ghi chú


                        • Ðề: Mỗi tuần một hàm trong Excel!

                          Tôi thấy chủ đề các bác mở ra là mỗi tuần một hàm Excel, nhưng đọc toàn thấy VB thôi à. Mà viết vài cái lệnh VB thì đâu có khó và chả liên quan gì đến Excel cả. Với các hàm này các bác cứ tự nhiên vào AutoCAD, Word, PowerPoint... hay cái quái gì mà chả dùng được.
                          Tôi thấy bọn lớp 48 CLC trường Xây dựng được dùng Excel để tính móng nông (có tra bảng, có vẽ biểu đồ ứng suất...) mà toàn dùng đúng các hàm của Excel thôi à (không hề có VB).

                          Xin mạn phép góp ý với bác PMXD là bác nên mở thêm một chủ đề về lập trình VB thì thích hợp hơn, lúc đó sẽ có nhiều dân IT vào đấy.

                          Ghi chú


                          • Ðề: Mỗi tuần một hàm trong Excel!

                            Từ trước đến giờ em toàn dùng excel để thực hiện.Không cần VBA đâu.Tuy hơi dài 1 chút nhưng chơi được mọi bài toán hết.Chỉ cần sáng tạo chút thôi.Ai thích thì em gửi mấy công thức nội suy trong bảng tra cơ đất cho.Chỉ dùng match và index là chơi được cả 1 chiều và 2 chiều hết.Dĩ nhiên là có hàm sẽ nhanh hơn nhưng ai chưa kịp học cũng có thể dùng ngay mà không cần đi nghiên cứu VBA.

                            Ghi chú


                            • Ðề: Mỗi tuần một hàm trong Excel!

                              bác PMXD thật tâm lý. em đang là sinh viên, học tàng tàng,ko bit VBA nên xin cái bác làm sẵn về dùng lại thấy hay. ai có thể cho mình bit về lập trình VBA ko, kiến thức từ thấp tới cao í
                              "ĐỜI LÀ BỂ KHỔ"

                              Ghi chú


                              • Ðề: Tiếp tục post bài

                                1- Tên hàm: Facot
                                2- Các tham số chính
                                M- Mô men (Kgm)
                                N- Lực dọc (Kg)
                                b- Bề rộng tiết diện (m)
                                h- Chiều cao tiết diện (m)
                                ao- Chiều dày lớp bảo vệ cốt thép
                                l - Chiều dài (thực tế) cột
                                Mdh- Thành phần momen dài hạn
                                Ndh- Thành phần lực dọc dài hạn
                                MBT- Mác bê tông (nếu ko nhập thì giá trị mặc định là 250)
                                KieuCotThep- Loại cốt thép (nếu ko nhập thì giá trị mặc định là "AII")
                                Kieulienket- Hình thức liên kết cua cột
                                = 1 : hai đầu ngàm
                                = 2 : hai đầu khớp
                                = 3 : 1 đầu ngàm, một đầu khớp
                                = 4 : 1 đầu ngàm, 1 đầu tự do
                                3- Thuật toán tổng thể của hàm
                                - Tính toán các thông số ban đầu
                                - Giả thiết giá trị hàm lượng cốt thép (Muy) ban đầu
                                - Tính toán giá trị Muy thực tế
                                - So sánh, tính lặp cho đến khi Muy giả thiết xấp xỉ Muy tính toán
                                - Tính diện tích cốt thép theo giá trị Muy cuối cùng
                                - So sánh với diện tích thép tính theo bài toán kéo (nén) đúng tâm
                                - Lấy giá trị Max của hai trường hợp

                                4- Nội dung của hàm

                                Function FaCot(ByVal M As Double, ByVal N As Double, ByVal b As Double, h As Double, _
                                ByVal ao As Double, ByVal l As Double, Optional Mdh = 0, Optional Ndh = 0, Optional MBT = 250, Optional KieuCotThep = "AII", Optional KieuLienKet = 1)

                                '============================Don vi tinh toan Kg,m
                                Dim Lo As Double 'Chieu dai tinh toan cua cau kien(m)
                                Dim ho As Double
                                Dim Muy As Double, nuy As Double, MuyGt As Double, NuyMin As Double
                                Dim Eo As Double, e As Double, eogh As Double, X As Double
                                Dim s As Double, Nth As Double
                                Dim Ja As Double, Jb As Double
                                Dim Phi As Double
                                Dim Kdh As Double
                                Dim MuyMin As Double

                                Dim Rn As Double, Rk As Double, Eb As Double, Ra As Double, Rad As Double, Ea As Double

                                Dim Fat As Double, HamLuongCot As Double

                                Dim Fadungtam As Double

                                If M <> 0 Then Kdh = 1 + Mdh / M

                                '==============================Xac dinh chieu dai tinh toan cua cot
                                Select Case KieuLienKet
                                Case 1 ' Hai dau ngam
                                Lo = 0.7 * l
                                Case 2 ' Hai dau khop

                                Case 3 'Dau ngam dau khop

                                Case 4 ' Dau ngam va Dau tu do

                                End Select
                                '==============================Xac dinh cac thong so cua be tong va thep

                                BeTong MBT, Rn, Rk, Eb
                                CotThep KieuCotThep, Ra, Rad, Ea

                                ho = h - ao
                                Phi = PhiUD(Lo, b, "R")
                                FaCot = 0: Fat = 0

                                '======================


                                MuyMin =TimMax(Array(HamLuongCot * 100, MuyMinVa(Lo, b, h, 0)))





                                If N = 0 Then
                                FaCot = 0: Fat = 0
                                ElseIf M = 0 And N < 0 Then
                                '================================Tinh toan cau kien chiu nen trung tam tiet dien chu nhat
                                N = Abs(N)
                                FaCot = ((N / Phi - Rn * b * h)) / Ra
                                Fat = ((N / Phi - Rn * b * h)) / Ra
                                Muy = 100 * (FaCot + Fat) / (b * ho)
                                '==========================================================================
                                ElseIf M <> 0 And N < 0 Then
                                '==================================Tinh toan cau kien chiu nen lech tam tiet dien chu nhat
                                M = Abs(M)
                                N = Abs(N)

                                '===== Tinh cho truong hop bo qua Momen
                                Fadungtam = ((N / Phi - Rn * b * h)) / Ra

                                '===============================




                                MuyGt = 2 * MuyMin
                                Muy = MuyGt


                                Do
                                MuyGt = (MuyGt + Muy) / 2
                                If MuyGt < 0 Then Exit Do
                                Jb = b * h ^ 3 / 12
                                Ja = 0.01 * MuyGt * b * (h - ao) * (0.5 * h - ao) * (0.5 * h - ao)

                                '===================================Tinh toan do lech tam eo
                                If b > 0.25 And h / 25 > 0.02 Then
                                Eo = (M / N + h / 25)
                                ElseIf b > 0.25 And h / 25 < 0.02 Then
                                Eo = (M / N + 0.02)
                                ElseIf b < 0.25 And h / 25 > 0.015 Then
                                Eo = (M / N + h / 25)
                                ElseIf b < 0.25 And h / 25 < 0.015 Then
                                Eo = (M / N + 0.015)
                                End If

                                '================================ Tinh he so anh huong den do lech tam
                                If Eo < 0.05 * h Then
                                s = 0.84
                                ElseIf 0.05 * h <= Eo < 5 * h Then
                                s = 0.11 / (0.1 + Eo / h) + 0.1
                                Else
                                s = 0.122
                                End If


                                Nth = 6.4 * ((s * Jb * Eb / Kdh) + Ea * Ja) / (Lo * Lo)
                                nuy = 1 / (1 - (N / Nth))
                                If nuy < 0 Then FaCot = "ThiÕu thÐp": Exit Function
                                eogh = 0.4 * (1.25 * h - Anpha(MBT) * ho)
                                X = N / Rn / b
                                If X < Anpha(MBT) * (h - ao) Then
                                '====================================Tinh toan lech tam lon

                                If X < 2 * ao Then
                                FaCot = N * (nuy * Eo - 0.5 * h + ao) / Ra / (ho - ao)
                                ElseIf X > 2 * ao And X < Anpha(MBT) * ho Then
                                e = nuy * Eo + 0.5 * h - ao
                                FaCot = N * (e - ho + 0.5 * X) / (Ra * ho - Ra * ao)
                                Else
                                GoTo TinhTheoLechTamBe
                                End If
                                Else
                                TinhTheoLechTamBe:
                                '=====================================Tinh toan lech tam be
                                If nuy * Eo <= 0.2 * ho Then
                                X = h - (1.8 + 0.5 * h / ho - 1.4 * Anpha(MBT)) * Eo
                                Else
                                X = 1.8 * (eogh - Eo) + Anpha(MBT) * ho
                                End If
                                e = 0.5 * h + nuy * Eo - ao 'Khoang cach tu luc doc den trong tam cot thep chiu keo

                                FaCot = ((N * e - Rn * b * X * (ho - 0.5 * X)) / Ra / (ho - ao))
                                End If
                                '====================================Kiem tra ham luong cot thep
                                Muy = 200 * FaCot / (b * ho)
                                Loop Until Abs(Muy - MuyGt) < 0.05
                                Fat = FaCot
                                ElseIf M = 0 And N > 0 Then
                                '===================================Tinh toan cau kien chiu keo trung tam
                                M = Abs(M)
                                N = Abs(N)
                                FaCot = 0.5 * N / Ra
                                Fat = 0.5 * N / Ra
                                Muy = 100 * (FaCot + Fat) / (b * ho)
                                ElseIf M <> 0 And N > 0 Then
                                M = Abs(M)
                                N = Abs(N)
                                Eo = M / N
                                If Eo <= 0.5 * h - ao Then
                                '===================================Tinh toan cau kien chiu keo lech tam be
                                Fat = N * (0.5 * h - Eo - ao) / Ra / (ho - ao)
                                FaCot = N * (0.5 * h + Eo - ao) / Ra / (ho - ao)
                                Fat = TimMax(Array(Fat, FaCot))
                                FaCot = TimMax(Array(Fat, FaCot))
                                Muy = 100 * (FaCot + Fat) / (b * ho)

                                Else
                                '==================================Tinh toan cau kien chiu keo lech tam lon
                                X = Anpha(MBT) * ho
                                Fat = (N * (Eo + 0.5 * h - ao) - Anpha(MBT) * (1 - 0.5 * Anpha(MBT)) * Rn * b * ho * ho) / Ra / (ho - ao)
                                FaCot = (N + Anpha(MBT) * Rn * b * ho + Ra * Fat) / Ra
                                Fat = TimMax(Array(Fat, FaCot))
                                FaCot = TimMax(Array(Fat, FaCot))
                                Muy = 100 * (FaCot + Fat) / (b * ho)
                                End If
                                End If
                                FaCot = TimMax(Array(FaCot, Fadungtam))
                                If Muy < 1 Then
                                Muy = 1
                                Fat = Muy * b * ho / 200
                                FaCot = Muy * b * ho / 200
                                Fat = Fat * 10 ^ 4
                                FaCot = FaCot * 10 ^ 4
                                Else
                                FaCot = FaCot * 10 ^ 4
                                Fat = Fat * 10 ^ 4
                                End If
                                End Function
                                [/QUOTE]
                                xem hộ cái dòng màu đỏ cái.
                                Last edited by pvtdhxd; 29-09-2007, 10:40 AM.

                                Ghi chú

                                Working...
                                X