operazioni con insiemi (Range)

Anonimo
2015-06-07T16:10:01+00:00

Operazioni con insiemi

Ho il problema di implementare una lista da un RangeA del Foglio2 al RangeB del Foglio1 pensavo di poter fare la seguente operazione;

RangeB = Unione(RangeB, RangeA)

Questo sotto sotto le seguenti condizioni:

  1) Che l'operazione sia possibile

  2) Che l'Intersezione(RangeA, RangeB) sia un'insieme vuoto

  2.1) Nel caso in cui Intersezione(RangeA, RangeB) non sia vuoto, poter elencare gli elementi dell'Insieme risultante per decidere cosa fare.

Viste le dimensioni del mio problema osso risolverlo con codice "standard" ma, con il Vs aiuto vorrei capire questo modo di operare.

Grazie

Claudio

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-06-09T06:37:23+00:00

Ciao Mauro, dal tuo chiarissimo esempio ho capito la confusione implicita nella mia domanda.

In effetti quello che volevo chiedere è, spero, chiaramente mostrato nella figura che segue:

<cut>

Qui hai già visto?

La risposta è stata utile?

0 commenti Nessun commento

12 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-06-08T16:08:50+00:00

    Ciao Claudio,

    continuiamo il dialogo fra sordi: tu fai domande che non capisco e io ti faccio domande alle quali non rispondi. Ci riprovo:

    1. Quali sono e dove sono i dati di input?

    Per esempio: RangeA sta per Foglio1, intervallo B2:C245; RangeB sta per Foglio2, intervallo AA123:ZZ832... 2. Dove vuoi l'output?

    Dove? 3. Quali sono i valori attesi dell'output?

    Questa può attendere la definizione di 1 e 2.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-08T13:49:39+00:00

    Spero di aver chiarito e di non aver aumentato la mia entropia.

    Forse non capisco, ma per me se:

    RangeA = B1:B3

    RangeB = A2:C2

    L'intersezione è B2. E' così che intendi?

    Ora, figuriamo che questi siano (nel Foglio2) i due Range con la parte rossa che si interseca:

    Quello che voglio (che vuoi tu sempre se ho capito) è sapere quali celle dell'intersezione hanno o meno un dato e conoscere indirizzo cella e suo contenuto. Questa macro fa quanto sopra:

     Public Sub m()

        Dim sh As Worksheet

        Dim rngA As Range

        Dim rngB As Range

        Dim c As Range

        Set sh = ThisWorkbook.Worksheets("Foglio2")

        With sh

            Set rngA = .Range("B1:C10")

            Set rngB = .Range("A3:D7")

            For Each c In rngA

                If Not Intersect(c, rngB) Is Nothing Then

                    If Len(c.Value) > 0 Then

                        MsgBox "La cella: " & c.Address & " contiene: " & c.Value

                    End If

                End If

            Next

        End With

        Set sh = Nothing

        Set rngA = Nothing

        Set rngB = Nothing

     End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-08T12:04:40+00:00

    Ciao, chiarisco subito:

    RangeB = Unione(RangeB, RangeA)

    Questo sotto sotto le seguenti condizioni:

    1) Che l'operazione sia possibile

    2) Che l'Intersezione(RangeA, RangeB) sia un'insieme vuoto

    2.1) Nel caso in cui Intersezione(RangeA, RangeB) non sia vuoto, poter elencare gli elementi dell'Insieme risultante per decidere cosa fare.

    In effetti c'è un poco di confusione, vedo, spero, di riscriverla meglio

    RangeA e RangeB sono i due insiemi di input RangeA implementa RangeB se:

    • Se: RangeC = Intersezione(RangeA,RangeB) è vuoto RangeB=Unione(RangeA, RangeB)
    • Se: RangeC <> Vuoto allora poter valutare queste identità e decidere cosa fare

    In particolare RangeC potrebbe essere lo stesso RangeA evidenziando con i colori gli elementi comuni.

    Spero di aver chiarito e di non aver aumentato la mia entropia.

    Grazie,

    Claudio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-07T18:41:24+00:00

    Ciao Claudio,

    non ho capito nulla. Quali sono e dove sono i dati di input? Dove vuoi l'output? Quali sono i valori attesi dell'output?

    La risposta è stata utile?

    0 commenti Nessun commento