Заменить слова в ячейке между двумя одинаковыми ключевыми словами – Excel

У меня есть лист, заполненный разным словом в другой ячейке.
Пример:
Word1 Word2 Word3 Word1 Word4
Word1 Word2 Word1 Word4

Мне нужна формула / макросы для замены слов между двумя одинаковыми заданными словами, т.е.

Word1 Word2 Word3 Word1 Word4 для замены
Word1 Word1 Word1 Word1 Word4

(Для вышесказанного мы заменили Word2, Word3 на Word1 во всей строке, где он когда-либо найден)

Word1 Word2 Word1 Word3 заменить на
Word1 Word1 Word1 Word4

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Спасибо!

Я основал код ниже в двух случаях, которые вы указали, т. Е. Если между словом 1 есть слово2, измените его, и если между словом1 есть слово2 и слово3 (я предполагаю, что они входят в этот порядок и всегда находятся в двух ячейках между словом1) их.

Этот метод немного груб из-за отсутствия информации, но я понимаю, что вы не сможете больше делиться информацией в целях конфиденциальности.

Private Sub sub1() Dim rng As Range Dim word1 As String, word2 As String, word3 As String Dim word4 As String, word5 As String, word6 As String Set rng = Application.InputBox("Input the range you want to substitute", "Input", Type:=8) word1 = "WordInCell1" word2 = "WordInCell2" word3 = "WordInCell3" word4 = "WordInCell4" word5 = "WordInCell5" word6 = "WordInCell6" For Each c In rng With c If .Value = word1 Then 'Check for first case If .Offset(0, 2).Value = word1 Then 'Check if the word in between the two words1 is word2 If .Offset(0, 1).Value = word2 Then .Offset(0, 1).Value = word1 End If 'Check for second case ElseIf .Offset(0, 3).Value = word1 Then 'Check if the two words in between are word2 and word3 - assuming they always come in that order If .Offset(0, 1).Value = word2 And .Offset(0, 2).Value = word3 Then .Offset(0, 1).Value = word1 .Offset(0, 2).Value = word1 End If Else 'Do Nothing End If End If End With Next c End Sub 

Это более общее решение вашей проблемы, без необходимости жесткого кодирования строк, которые вы ищете.

 Private Sub replaceWords() Dim rng, currentRow As Range Dim currentCol, firstCol, lastCol As Integer Dim word1 As Variant Dim i, j As Integer Set rng = Application.InputBox("Input the range you want to substitute", "Input", Type:=8) 'Disect the range into column numbers firstCol = rng.Column lastCol = rng.Cells.SpecialCells(xlCellTypeLastCell).Column 'Iterate through all rows For Each currentRow In rng.Rows currentCol = firstCol 'start at the left side of the range While currentCol < lastCol 'Set word1 to the value of the cell in the currenct column word1 = Cells(currentRow.Row, currentCol).Value 'Check subsequent columns for the same cell For i = currentCol + 1 To lastCol If Cells(currentRow.Row, i).Value = word1 Then 'If same word1 is found, fill cells in between with word1 For j = currentCol + 1 To i - 1 Cells(currentRow.Row, j) = word1 Next j 'Continue search at the column where word1 was last encountered position currentCol = i - 1 '-1 becaus we add 1 again at the end of the while loop Exit For End If Next i currentCol = currentCol + 1 'go to next column Wend Next End Sub 

Это будет работать слева направо, поэтому «Word1 Word2 Word1 Word2» станет «Word1 Word1 Word1 Word2», а не «Word1 Word2 Word2 Word2». Не должно быть слишком сложно настроить код, если вы хотите, чтобы он был наоборот.

  • Как получить последний измененный файл в каталоге с помощью VBA в Excel 2010
  • Соответствие SUMIF с частичным поиском
  • C # создал граф Excel - должен быть ScatterLine, но это тип линии на других компьютерах
  • Excel - перекрывающиеся ячейки
  • Как я могу ссылаться на встроенный тип MS Excel с OLE
  • Расчет стоимости, основанной на 15-минутных приращениях в Excel
  • использовать функции куба для фильтрации
  • Запрос таблицы, содержащей СОДЕРЖАНИЕ подстановочных знаков
  • Как автогенерировать определенные строки excel с определенных входов, как указано в примере?
  • используя косвенное .ext как значение, если true при IF-функции
  • Уникальный список с минимумами и максимумами из простой таблицы
  • Давайте будем гением компьютера.