Come affrontare problema VBA Excel



  • Come affrontare problema VBA Excel
    di Lorick (utente non iscritto) data: 05/06/2017 15:18:52

    Dei pacchi arrivano ad un centro di distribuzione secondo una distribuzione discreta K e vengono elaborati da una prima macchina smistatrice secondo una distribuzione S1. Usciti da questa prima macchina vengono inseriti una seconda macchina smistatrice che lavora secondo una distribuzione S2.

    ----C1---->Smistatrice1-----C2---->Smistatrice2------U--->

    C1 e C2 rappresentano le code che si suppone essere a capacità infinita.
    Nel documento Excel 20170420_IF.xlsm sono presenti nel foglio1 nelle colonne:
    • A e B la distribuzione di densità K
    • D e E la distribuzione di densità S1
    • G e H la distribuzione di densità S2
    Scrivere il codice VBA che simula il comportamento del sistema ed in particolare delle code C1 e C2 e dell’uscita U. Il codice deve scrivere nel foglio2
    • Colonna A l’andamento istante per istante della coda C1
    • Colonna B l’andamento istante per istante della coda C2
    • Colonna C l’andamento istante per istante dell’uscita U
    La simulazione dura un tempo T inserito dall’utente attraverso una InputBox. Si ricorda che i valori degli oggetti arrivati, in coda e trattati sono numeri interi positivi o nulli.
    ATTENZIONE!!! Le distribuzioni di densità presenti nel foglio1 sono un esempio. Il codice deve funzionare anche con distribuzioni di densità differenti (numero maggiore o minore di eventi)



  • di alfrimpa data: 05/06/2017 16:09:14

    Ma che razza di domanda è questa?

    Il forum non è un luogo dove si commissionano "lavori" per giunta gratis!!

    Tu intanto che cosa hai fatto per risolvere il "tuo" problema?

    Mostra quello che hai fatto e chiedi aiuto sulle difficoltà che non riesci a superare.

    Alfredo







  • di Vecchio Frac data: 05/06/2017 16:18:36

    Sembra il testo di una prova d'esame ("Scrivere il codice VBA che...").
    In tal caso aggiungo che questo non è il luogo adatto per farsi risolvere questo tipo di problemi (non si imparerebbe niente) e che viola alcuni punti del nostro regolamento (clicca qui per leggere il regolamento).





  • di patel data: 05/06/2017 16:23:13

    Ciao alfredo, mi hai preceduto, è proprio una commissione lavori fatta in modo freddo e professionale





  • di Lorick (utente non iscritto) data: 05/06/2017 16:40:27

    Vi chiedo scusa, sono inesperto e non ho scritto la domanda. Volevo solo riuscire a risolvere un dubbio:
    Ho inserito le distribuzioni di probabilità all'interno di vettori e poi ho creato la funzione di estrazione della variabile casuale dalla distribuzione. Quello che non riesco a capire è come esprimere l'andamento del sistema all'interno di un unico ciclo for, e quindi esprimere l'iterazione al tempo i in funzione del tempo i - 1.
    Grazie anticipatamente.
     
    Option Explicit
    
    Function estrai(ByVal y As Double, v() As Double, c() As Double) As Integer
    Dim j As Integer
    If y <= v(0) Then
    estrai = c(0)
    Else
    For j = 1 To UBound(v)
    If y <= v(j) And y > v(j - 1) Then
    estrai = c(j)
    End If
    Next
    End If
    End Function
    
    
    
    Sub esercizio()
    Dim k() As Double
    Dim ka() As Double
    Dim s1() As Double
    Dim s1a() As Double
    Dim s2() As Double
    Dim s2a() As Double
    Dim i As Integer
    Dim x As Double
    Dim a As Double
    Dim T As Integer
    Dim loris As Integer
    
    i = 1
    Do While Not IsEmpty(Cells(i, 2))
    ReDim Preserve ka(i - 1)
    ka(i - 1) = Cells(i, 2)
    i = i + 1
    Loop
    i = 1
    Do While Not IsEmpty(Cells(i, 5))
    ReDim Preserve s1a(i - 1)
    s1a(i - 1) = Cells(i, 5)
    i = i + 1
    Loop
    i = 1
    Do While Not IsEmpty(Cells(i, 8))
    ReDim Preserve s2a(i - 1)
    s2a(i - 1) = Cells(i, 8)
    i = i + 1
    Loop
    i = 1
    Do While Not IsEmpty(Cells(i, 1))
    ReDim Preserve k(i - 1)
    If i > 1 Then
    k(i - 1) = Cells(i, 1) + k(i - 2)
    Else
    k(i - 1) = Cells(1, i)
    End If
    i = i + 1
    Loop
    i = 1
    Do While Not IsEmpty(Cells(i, 4))
    ReDim Preserve s1(i - 1)
    If i > 1 Then
    s1(i - 1) = Cells(i, 4) + s1(i - 2)
    Else
    s1(i - 1) = Cells(1, 4)
    End If
    i = i + 1
    Loop
    i = 1
    Do While Not IsEmpty(Cells(i, 7))
    ReDim Preserve s2(i - 1)
    If i > 1 Then
    s2(i - 1) = Cells(i, 7) + s2(i - 2)
    Else
    s2(i - 1) = Cells(1, 7)
    End If
    i = i + 1
    Loop
    
    T = InputBox("dammi un numero")
    
    
    End Sub



  • di alfrimpa data: 05/06/2017 16:53:55

    Beh la Sub esercizio mi sembra che indichi chiaramente che di questo si tratta.

    Per me quanto mi riguarda io passo.

    Alfredo





  • di patel data: 05/06/2017 19:38:25

    però la situazione è cambiata, ora si tratta veramente di indicare come procedere, però io ho capito poco, ti dispiace allegare il file con i dati ? vuoi creare un grafico ?