Posso aggiungere una macro per modificare il valore di una cella nel foglio 2 in base all'aumento del valore di una cella nel foglio 1


0

Sto cercando di progettare una macro che cambierà tutte le celle in una riga con un valore da 4 a un valore di 3. Ma solo se aggiorno una cella su un altro foglio.

Può essere fatto? È anche possibile farlo in una formula ma su più righe?

Devo farlo per aggiornare una matrice di allenamento. In modo che quando aggiorno un numero SOP nel foglio 1 cambierà tutti sul codice 4 (attualmente addestrato) al codice 3 (addestrato alla versione precedente). Dato che ho centinaia di righe di SOP non voglio avere un codice diverso per ogni riga.

Spero che tutto ciò abbia un senso.


1
Sì, questo è possibile.
Sir Adelaide,

Sir Adelaide, per favore, puoi dirmi come?
Steve,

1
@Steve questo non è un servizio di scrittura di script. Prova e torna indietro con una modifica alla tua domanda (o fai una nuova domanda se questa è chiusa) per spiegare cosa hai provato e dove sei bloccato.
Kevin Anthony Oppegaard Rose,

Vuoi dire se in una cella del foglio 1 si digita il numero SOP in poche righe del foglio 2 dovrebbe essere aggiornato con 3, scrivere?
Rajesh S,

@RajeshS: alcune colonne di una riga dovrebbero cambiare da 4 a 3. Ma solo se il valore corrente è 4. Ma sarebbe necessario applicarlo a più righe. Aggiornando solo le colonne in quella riga
Steve,

Risposte:


0

Controlla la schermata:

inserisci qui la descrizione dell'immagine

Inserisci sotto il codice VBA scritto come modulo nel foglio 2:

Sub MultiFindReplace()

Dim Rng As Range
Dim InputRng As Range, ReplaceRng As Range
xTitleId = "Find & Replace"

Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Original Range ", xTitleId, InputRng.Address, Type:=8)
Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8)

Application.ScreenUpdating = False


For Each Rng In ReplaceRng.Columns(1).Cells
If Sheet1.Range("A208").value = "OTP" Then

    InputRng.Replace what:=Rng.value, replacement:=Rng.Offset(0, 1).value
End If

Next

Application.ScreenUpdating = True

End Sub

Come funziona:

  1. Esegui questa macro, nella prima finestra di prompt spuntata, specifica l'intervallo di dati che desideri sostituire con 4.
  2. Per l'esempio mostrato selezionare A350: E352.
  3. Fare clic su OK, viene visualizzata un'altra finestra di prompt per ricordare di selezionare i criteri (Trova e sostituisci intervallo di valori).
  4. Per l'esempio mostrato selezionare G350: H350.
  5. Termina con OK, scopri che tutti i 4 sono stati sostituiti con 3 di cui hai bisogno.

NB

  1. Per la prima finestra del prompt di cacca è possibile selezionare l'intero intervallo (come ho mostrato nell'esempio) o una delle colonne in cui si desidera sostituire 4 con 3.

  2. Non dimenticare di scrivere "OTP" nella cella A208 del foglio 1 prima di eseguire questa macro.

  3. Devi scrivere 4 in G350 e 3 in H350.
  4. È possibile regolare l'indirizzo della cella e il valore in A208 (Foglio1) in base alla propria scelta.

0

OK, quindi ho qualcosa che funziona modificando la soluzione pubblicata sopra.

Ho questo nel foglio1 (codice)

Private Sub Worksheet_change(ByVal Target As Range)

If Target.Address = "$D$3" Then
Call MultiFindReplace
End If

If Target.Address = "$D$4" Then
Call MultiFindReplace2
End If

End Sub

E ho questo su Module1 (codice)

Sub MultiFindReplace()

Dim Rng As Range
Dim InputRng As Range, ReplaceRng As Range

For Each Worksheet In ThisWorkbook.Worksheets
Set InputRng = Worksheet.Range("D4:S4")
Set ReplaceRng = Worksheet.Range("D4:S4")
    InputRng.Replace what:=(4), replacement:=(3)

Next
Application.ScreenUpdating = True

End Sub

Sub MultiFindReplace2()

Dim Rng As Range
Dim InputRng As Range, ReplaceRng As Range

For Each Worksheet In ThisWorkbook.Worksheets
Set InputRng = Worksheet.Range("D5:S5")
Set ReplaceRng = Worksheet.Range("D5:S5")
    InputRng.Replace what:=(4), replacement:=(3)

Next
Application.ScreenUpdating = True

End Sub

Esiste un modo più intelligente di scrivere questo in modo da non avere centinaia di chiamate diverse?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.