Да, с VBa ... Просто скопируйте это в "ThisWorkbook" на экране Visual Basic и затем запустите его (зеленый игровой треугольник)
Sub WalkThePlank()
dim colorIndex as Integer
colorIndex = 3 'UPDATE ME TO YOUR COLOUR OR BE FED TO THE SHARKS
Dim rng As Range
For Each rng In ActiveSheet.UsedRange.Cells
Dim color As Long
color = rng.Interior.ColorIndex
If (color = colorIndex) Then
rng.Locked = True
else
rng.Locked = false 'this will remove any locks for those not in the given color
End If
Next rng
End Sub
В VBa нет отмены, поэтому сначала сделайте копию вашего файла (чтобы создать резервную копию)!
Цветовой индекс - http://dmcritchie.mvps.org/excel/colors.htm
Как добавить VBA в MS Office?
Вышеприведенное предполагает, что у вас нет объединенных ячеек и что ваш лист не защищен.
Если вы не уверены, какой colorIndex вам нужен, сначала используйте этот скрипт
Sub Find()
Dim colorIndexFinder As Integer
colorIndexFinder = Range("A1").Interior.colorIndex 'CHANGE A1 to the cell with the colour you want to use
MsgBox (colorIndexFinder)
End Sub
редактировать
Вы упомянули, что вы используете объединенные ячейки
Пожалуйста, попробуй
Sub WalkThePlank()
Dim colorIndex As Integer
colorIndex = 3 'UPDATE ME TO YOUR COLOUR OR BE FED TO THE SHARKS
Dim rng As Range
For Each rng In ActiveSheet.UsedRange.Cells
Dim color As Long
color = rng.Interior.colorIndex
If (color = colorIndex) Then
If (rng.MergeCells) Then
rng.MergeArea.Locked = True
Else
rng.Locked = True
End If
Else
If (rng.MergeCells) Then
rng.MergeArea.Locked = False
Else
rng.Locked = False
End If
End If
Next rng
End Sub