![Удалить повторяющиеся символы в строке в Excel](https://rvso.com/image/1638107/%D0%A3%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D1%8F%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B%20%D0%B2%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B5%20%D0%B2%20Excel.png)
Я пытаюсь сделать возможным ввод "x" (без кавычек) только один раз в каждой строке. Я бы предпочел использовать проверку данных, но если это невозможно, я также могу использовать VBA. Я пробовал несколько вещей с COUNTIF, например, при проверке данных, но я могу узнать только, как удалить дубликаты из столбцов, а не из строк.
Есть идеи, что я могу сделать?
решение1
Попробуйте следующий макрос событий рабочего листа.(оно использует COUNTIF()
):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wf As WorksheetFunction, v As Variant
Dim rng As Range, x As String
Set wf = Application.WorksheetFunction
v = Target.Value
Set rng = Target.EntireRow
x = "x"
If v <> x Then Exit Sub
If wf.CountIf(rng, x) > 1 Then
Application.EnableEvents = False
MsgBox "Too many x"
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Так как это код рабочего листа, его очень легкоустановитьи автоматически использовать:
- щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
- выберите «Просмотреть код» — откроется окно VBE
- вставьте текст и закройте окно VBE
Если у вас возникли какие-либо сомнения, попробуйте сначала на пробном листе.
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel позже 2003, вы должны сохранить файл как .xlsm, а не .xlsx
Кудалятьмакрос:
- откройте окна VBE, как указано выше
- очистить код
- закрыть окно 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
Для работы этого метода должны быть включены макросы!
решение2
Просто уточню ответ Гэри. Нет способа сделать это только с помощью проверки данных и нужен VBA с включенными макросами, чтобы все работало именно так, как описано.
Если вы хотите избежать VBA, вы можете начать с ограничения каждой ячейки раскрывающимся списком «x» или «». Теперь используйте условное форматирование, чтобы отобразить предупреждение, если counta больше 1. Затем пользователь должен вручную удалить лишние x, пока подогрев не исчезнет.