Jak w Excelu mogę automatycznie zmienić dane komórki (VBA)?

0

Chciałbym automatycznie zmienić zawartość komórek po wklejeniu do nich danych. Dane zostaną wklejone do kolumny Q arkusza w programie Excel. Muszę go dopasować do danych w kolumnie A innego arkusza, zatytułowanego „Użytkownicy”, i zwrócić odpowiednią wartość z kolumny B tego samego arkusza. Przypuszczam, że będzie to wymagało użycia VBA, chociaż bardzo mało rozumiem kodowania VBA!

Każda pomoc będzie bardzo mile widziana!

Alan
źródło
1
Proszę edytować Twoje pytanie, aby lepiej wyjaśnić, co próbujesz zrobić, w tym, co już próbowałeś, a następnie zapytać, jak to osiągnąć. Uwzględniając metodę rozwiązania w swoim pytaniu, ogranicza odpowiedzi tylko do rozwiązań VBA. Może istnieć rozwiązanie inne niż VBA.
CharlieRB
Sprawdzać worksheet change event i daj nam znać, gdzie utkniesz
Raystafarian
Czy masz na myśli to, że po wprowadzeniu określonej wartości w kolumnie Q w arkusz1 , a następnie Excel do ” sprawdzać „ta wartość w kolumnie A arkusz2 i zwróć wartość kolumny B z arkusz 2 do arkusz1 . Ale w której kolumnie arkusz1 ?
Prasanna
Nie mów mi, że powinna zmienić wartość w kolumnie Q w arkusz1 . To staje się cyklicznym połączeniem. Excel wyświetli ostrzeżenie - w tym przypadku
Prasanna
Cześć chłopaki, dzięki za komentarze. Znalazłem kod czegoś, co wydaje się prawie takie samo, jak szukam w odpowiedzi na inne pytanie na tej stronie: superuser.com/questions/541674/… Staram się wypracować, jak dostosować go do komórek, z którymi pracuję. Zmieniłem nieco układ. Tak więc komórki wklejane do danych są w kolumnie Q. Komórki, które chcę wyszukać, znajdują się w kolumnie Z tego samego arkusza, i chciałbym, aby zwracał odpowiednią wartość z kolumny AA.
Alan

Odpowiedzi:

0

Nie wierzę, że możesz robić, co chcesz. Nie ma sposobu (wiem o tym) na wykrywanie tylko past.

Najbliżej jest użyć

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Oznacza to jednak, że będzie strzelał za każdym razem, gdy wprowadzona zostanie jakakolwiek zmiana na stronie.

W związku z tym możesz wkleić do Col Q, a następnie ręcznie uruchomić makro (które można przypisać do przycisku, jeśli jest to łatwiejsze).

Option Explicit

Sub MatchThePairs()

'You can edit this top bit

'The name of column you are pasting into
Dim pastedCol As String
pastedCol = "Q" 'UPDATE ME IF NEEDED

'The name of the look up column
Dim lookupCol As String
lookupCol = "Z" 'UPDATE ME IF NEEDED

'The name of the look to show results
Dim resultCol As String
resultCol = "AA" 'UPDATE ME IF NEEDED

'Do you want to clear the results first ?
Dim clearResults As Boolean
clearResults = True 'CHANGE ME TO True OR False

'What is the row of the header (if you have one)
Dim rowHeader As Integer
rowHeader = 1 ' set to 0 if no header

'What is the name of the results column
Dim resultsColHeader As String
resultsColHeader = "ResultsCol" ' Change me to what ever

'what is the first row (do not include the headings)
Dim row As Integer
row = 2 'AS PER THE SCEEN SHOT, I STARTED ON ROW 2



' **** hopefully you won't need to edit anything below this

If clearResults Then
    Range(resultCol & ":" & resultCol).Cells.Clear

    If rowHeader > 0 Then
       Range(resultCol & rowHeader).Value = resultsColHeader
    End If


End If

Do While (Range(pastedCol & row).Value <> "")

    If Range(pastedCol & row).Value = Range(lookupCol & row).Value Then
        'yipee, a match
        Range(resultCol & row).Value = Range(lookupCol & row).Value
    End If
    row = row + 1
Loop

End Sub

Przed

enter image description here

Po

enter image description here

Dave
źródło