VBA - Используя список критериев, выберите и очистите или выберите заменяемые значения - PullRequest
0 голосов
/ 02 ноября 2018

Хорошо, я вернулся. На этот раз я пытаюсь быстро выбрать все значения в диапазоне, которые соответствуют значениям в отдельном списке, моя первая итерация будет состоять в том, чтобы очистить содержимое аннулированных идентификаторов, моя вторая итерация будет состоять в том, чтобы выбрать эти значения и затем заменить их с соответствующими новыми значениями.

Я задал еще один вопрос о VBA, и меня упомянули, что я пытался учить себя и находить ресурсы для работы над этими вопросами раньше, но люди, кажется, разозлились из-за того, что я спрашиваю, не могли бы вы хотя бы направить меня где-нибудь, где я могу узнать об этих вопросах (или даже в месте, где я могу выучить базовую логику и получить список используемых функций без необходимости проходить через все "Как создать свой первый Excel VBA для какой-то проблемы, о которой никто не заботится") был бы признателен)

Во всяком случае, я пытался посмотреть несколько видео, а затем взломать что-то, но кажется довольно ясным, что функция, которую они использовали, не может быть адаптирована для других целей. Вот что у меня на данный момент:

Sub FilterElim()
    finalRow = Range("g2").End(xlDown).Row
    Range("A1").ClearContents _
        Action:= xlClearContents, _
        CriteriaRange: Range("Sheet4!B1:B10"), _
        Unique:= False
End Sub

Поэтому, основываясь на некоторых полезных вопросах, я делаю правку, чтобы включить пример и желаемый конец

Пример набора: enter image description here

Желаемый конечный результат:

enter image description here

Полагаю, мне может потребоваться выполнить какой-то выбор, основанный на Критериях, перед ClearContents, но я не нашел ничего полезного в том, как это сделать. Пожалуйста и спасибо.

| Contractor   ID | Cont Name         | Proj 1 | Proj 2 | Proj 3 |   |   | Old ID | Reconciliation |
|-----------------|-------------------|--------|--------|--------|---|---|--------|----------------|
| C1001           | Boba Fet          | P1120  |        |        |   |   | P1001  | Void           |
| C1003           | Jules Winnfield   | P1031  | P1045  |        |   |   | P1002  | P1010          |
| C1002           | Dom Cobb          | P1001  |        |        |   |   | P1005  | Void           |
| C1010           | Patrick Verona    | P1020  | P1224  | P1251  |   |   | P1020  | Void           |
| C1007           | Matt Damon        | P1008  | P1005  | P1300  |   |   | P1045  | P1100          |
| C1004           | Ned Plimpton      | P1002  |        |        |   |   | P1224  | P1300          |
| C1020           | Derek Zoolander   | P1020  | P1290  |        |   |   |        |                |
| C1009           | Charles Marlow    | P1002  | P0090  |        |   |   |        |                |
| C1011           | Robert Jordan     | P1119  |        |        |   |   |        |                |
| C1015           | Perrin Aybara     | P1200  | P1224  |        |   |   |        |                |
| C1005           | Fuzzy Dunlop      | P1005  |        |        |   |   |        |                |
| C1008           | Thomas A Anderson | P1001  | P1000  |        |   |   |        |                |
|                 |                   |        |        |        |   |   |        |                |

1 Ответ

0 голосов
/ 02 ноября 2018

Что заставляет вас идти на решение VBA? Трудно многое сделать без учета ваших данных и ожидаемого результата.

Не VBA вариант:

=IFERROR(INDEX($G$2:$G$15,MATCH(A32,$F$2:$F$15,0)),B32)

enter image description here

Для опции VBA вы можете попробовать:

Option Explicit

Sub update_id()

Dim D1 As Object: Set D1 = CreateObject("scripting.dictionary")
Dim R1 As Range: Set R1 = Range("A2:A32")
Dim R2 As Range: Set R2 = Range("E2:E15")
Dim Rtmp As Range

For Each Rtmp In R2
    D1(Rtmp.Value) = Rtmp.Offset(0, 1).Value
Next Rtmp

For Each Rtmp In R1
    If D1.exists(Rtmp.Value) Then Rtmp.Offset(0, 1) = D1(Rtmp.Value)
Next Rtmp

End Sub

Работает над следующими настройками:

enter image description here

Опять же, без лучшего понимания ваших данных и вашей проблемы трудно быть более точным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...