Хорошо, допустим, у меня есть список названий фильмов. Скажем для простоты, что есть 5 названий фильмов. В следующем столбце у меня есть оценки, основанные на моем мнении о фильмах, от 1 до 5, потому что есть 5 названий.
Вот пример:

Фильм А -> 2
Фильм Б -> 1
Фильм C -> 3
Фильм D -> 5
Фильм E -> 4

Теперь скажите, что я хочу добавить новый фильм с рейтингом 3, так как он мне понравился больше, чем в фильмах C, D и E.

Фильм F -> 3

Так как теперь у меня будет
Фильм C -> 3 и Фильм F -> 3
рейтинги должны будут измениться, верно? Итак, я ищу команду или формулу, которую я могу использовать для автоматического создания:

  • Фильм C получает оценку 4 (3+1)
  • Фильм D получает оценку 6 (5+1)
  • Фильм E получает оценку 5 (4+1)

Таким образом, список сразу после того, как я добавлю «Movie F -> 3», обновится до

Фильм А -> 2
Фильм Б -> 1
Фильм C -> 4
Фильм D -> 6
Фильм E -> 5
Фильм F -> 3

Есть идеи?

2 ответа2

1

Вот моя идея (без кода).
1. Напишите подпрограмму VBA, которая запускается при изменении значения в столбце B («Private Sub Worksheet_Change (ByVal Target As Range)»).
2. отметьте Target как ячейку в столбце B.
3. сохранить значение текущего выбора в переменной

new = Selection.value

4. сравните все значения ячеек в столбце B из строки 1 с последней непустой строкой, если она больше или равна новому значению. Если равно, если оно находится в той же строке, что и выделение, пропустите его. Во всех остальных случаях увеличьте значение на 1.

0

Вот реализация кода u1016274 :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("B:B"), Target) Is Nothing Then Exit Sub
   v = Target.Value
   addy = Target.Address(0, 0)
   Application.EnableEvents = False
      For Each r In Intersect(Range("B:B"), ActiveSheet.UsedRange)
         If r.Address(0, 0) <> addy And r.Value >= v Then
            r.Value = r.Value + 1
         End If
      Next r
   Application.EnableEvents = True
End Sub

Так что, если мы начали с:

и добавил Raging Bull как номер 3, мы бы получили:

Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите View Code - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Чтобы узнать больше о макросах событий (код листа), см .:

http://www.mvps.org/dmcritchie/excel/event.htm

Макросы должны быть включены, чтобы это работало!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .