У меня есть книга Excel, которая имеет 60 вкладок. Мне нужно удалить любое значение, которое существует во всех вкладках. Есть ли функция или каким-то образом я мог бы сделать это?
1 ответ
Есть несколько вариантов; Один из вариантов - использовать формулу, чтобы увидеть, существует ли значение на всех листах, а затем вручную найти или заменить, чтобы удалить его, если оно есть. Я не фанат этого варианта.
Я бы рекомендовал использовать макрос с циклом For Each, чтобы пройтись по всем рабочим листам в файле и проверить, было ли найдено значение; если он найден во всех листах, очистите эти ячейки. Мы сделаем что-то вроде этого:
Sub ClearAll()
Const csValue As String = "Test" 'This is the value we're looking for
Dim rngFound() As Range 'This is a list of all the cells containing the value
Dim i As Integer 'This is a counter for the list
Dim shtSheet As Worksheet 'This is an individual sheet
Dim bolAll As Boolean 'This is a flag to indicate whether the value is in all sheets
ReDim rngFound(1 To ActiveWorkbook.Sheets.Count) 'Size the list to the number of sheets
bolAll = True 'Assume we will find the value in all sheets
For Each shtSheet In ActiveWorkbook.Sheets 'Loop through each sheet
Set rngFound(shtSheet.Index) = shtSheet.Cells.Find(what:=csValue) 'Look for the value in this worksheet
If rngFound(shtSheet.Index) Is Nothing Then 'Check whether a match was found
bolAll = False 'If a match wasn't found, change the flag and exit the loop
Exit For
End If
Next shtSheet
If bolAll Then 'If the value was on all sheets
For i = 1 To UBound(rngFound) 'Loop through each flagged cell...
rngFound(i).ClearContents '...and delete its contents
Next i
End If
End Sub
Чтобы использовать этот код, откройте редактор Visual Basic, нажав Alt+F11 на клавиатуре или перейдя на вкладку "Разработчик" на ленте и выбрав "Visual Basic". В левой панели редактора Visual Basic щелкните правой кнопкой мыши запись вашего рабочего листа и выберите "Вставить" -> "Модуль":
Скопируйте код выше и вставьте его в новое окно модуля. Теперь вы можете получить к нему доступ и запустить его через интерфейс макросов. Вы захотите заменить "Test" во второй строке этого кода на любое значение, которое вы ищете. У нас есть и другие способы изменить это значение, если вам нужно сделать это с несколькими значениями - дайте мне знать, что вам нужно.