Чтобы подробнее остановиться на некоторых комментариях: индекс соответствия - это шаблон, который обычно используется в формулах внутри ячейки в качестве более гибкого дополнения к VLOOKUP.
Это работает так: =INDEX(YourTotalRangeOfData,MATCH("YourSearchKey",TheColumnRangeOfYourSearchKey,0),TheNumberOfTheColumnInYourTotalRangeThatYouWantToReturn)
На практике это выглядит так: =INDEX(C3:E11,MATCH("Frantz",B3:B11,0),2)
В ячейках Excel будет отслеживать изменения за вас.В коде вы продолжите сталкиваться с проблемами при изменении номеров ссылок на столбцы.
Комментарий wallyeye о настройке переменных столбца хорош, и вы могли бы сделать это так:
Dim genreColumn as Integer
genreColumn = 78
**If InStr(UCase(c.Value), UCase("John Coltrane")) > 0 Then c.Offset(0, genreColumn).Value = "Jazz"**
Еще лучше, на мой взгляд, иметь раздел "setup"который бежал в начале вашего кода.Цель раздела настройки - установить для вас все переменные столбца.Что-то вроде:
Dim colNum as Integer
For colNum = 1 to 100 'or however many populated columns you end up having...
Select Case Sheet1.Cells(1, colNum) 'Look at the column header
Case "Genre" 'If you've found the "Genre" column
genreColumn = colNum 'Give the genreColumn variable the correct value
Case "Artist"
artistColumn = colNum
End Select
Next
Запустите его в начале кода, и вам больше никогда не придется беспокоиться об изменении позиции столбца.Если у вас правильный заголовок столбца (который намного проще проверить), у вас будет правильный номер.
Кроме того, чтобы повторить то, что сказали другие, у вас все отлично.Это не похоже на код «предварительного» новичка.:)