2013-08-10 2 views
2

Итак, я пытаюсь найти/сделать программу, которая найдет все мои повторяющиеся слова в excel. Например, в A1 «кто-то» в A2 «« человек »и т. Д., Но у меня будет« кто-то »несколько раз или другое слово, и мне нужно конденсировать эту информацию вместе, но мне нужно сделать это так, t поиск вручную, чтобы объединить дубликаты. Итак, есть ли способ найти повторяющиеся слова и объединить их?Есть ли способ найти повторяющиеся слова?

Я также занимаюсь этим, используя «НАЙТИ», чтобы искать их, но это еще не принесло удачи. также использовали «ФИЛЬТР», но я не знаю, как сконденсировать дубликаты, не делая этого вручную. Мне также интересно, где вы можете найти код для таких функций, как «НАЙТИ, ЗАМЕНИТЬ И ЭКТ». Если бы я мог что я могу изменить кодировку «УДАЛИТЬ ДУЛИКАТЫ», чтобы изменить ее для слов. Но я действительно не знаю, будет ли это действительно работать или нет. Все, что могло бы помочь.

Например:

culomn1 - culomn2 -----culomn3 
y ------ A -----(nothing) 
z ------ B -----(nothing) 
z ------ (nothing)-----I 
x ------ (nothing)-----k 
y ------ (nothing)-----j 
x ------ C ------(nothing) 

этому

culomn1 - culomn2 -----culomn3 
y------A------j 
z------B------I 
x------C------k 

кроме букв слова. enter image description here

+0

может быть, вы могли бы разместить изображение на листе с данными, то можно считать, оттуда –

ответ

1

Я не знаю, могли бы вы сделать это с помощью формул в Excel, если не знаете, какое слово вы ищете внутри ячейки. Вы можете попробовать либо UDF, либо регулярное выражение.

мой вопрос и ответ со ссылками может вам начать:

StackOverflow: formula to see if a surname is repeated within a cell

и, возможно:

VBA Express

После того, как Вы разместили свой рабочий лист Excel с данными мы видим, если я «У меня все получилось!

+0

то, что вы разместили в StackOverflow: формулу, чтобы увидеть, повторяется ли фамилия в ячейке - это почти то же самое, что я работаю над получением документа excel до – Dopeyy2

+0

. Я не могу опубликовать фотографии, так что вам нужно будет принять из моего аватара из моего профиля, но, конечно же, вы не можете его прочитать: P – Dopeyy2

1

Вы можете использовать расширенный фильтр для копирования уникальных значений из столбца 1 в новый столбец. Затем вы должны использовать формулу vlookup, чтобы получить остальное.

Предположения:

  • Row 1 является строка заголовка, так фактические данные начинается в строке 2
  • Столбец1 на колонке "А"
  • Столбец2 в колонке "Б"
  • Столбец3 на колонке " C "
  • Новый столбец с уникальными значениями - столбец" E ".

В ячейку F2 и копируются в G2, а затем вниз по мере необходимости:

=INDEX(INDEX($B$2:$C$7,0,COLUMNS($E2:E2)),MATCH(1,INDEX(($A$2:$A$7=$E2)*(INDEX($B$2:$C$7,0,COLUMNS($E2:E2))<>""),),0)) 
1

Лист1 До: enter image description here

Код:

Sub Macro1() 

    With Sheet1 
     .Columns("A:A").AdvancedFilter Action:=xlFilterCopy, _ 
      CriteriaRange:=.Range("F1:F2"), CopyToRange:=.Range("K1"), Unique:=True 
     .Columns("B:B").AdvancedFilter Action:=xlFilterCopy, _ 
      CriteriaRange:=.Range("G1:G2"), CopyToRange:=.Range("L1"), Unique:=True 
     .Columns("C:C").AdvancedFilter Action:=xlFilterCopy, _ 
      CriteriaRange:=.Range("H1:H2"), CopyToRange:=.Range("M1"), Unique:=True 
    End With 

End Sub 

Лист1 После : enter image description here

удостоверьтесь, что имена полей не используются.

1

Это даст вам функцию, которая будет найти первую непустую ячейку с определенной строкой

Option Explicit 

Function NonBlankLookup(SearchTxt As String, LookIn As Range, OffSetRows As Long) As Variant 
Dim loc As Range 
Dim FirstFound As Range 

Set loc = LookIn.Find(what:=SearchTxt) 
While Not (loc Is Nothing) 
    If Not IsEmpty(loc.Offset(0, OffSetRows)) Then 
     NonBlankLookup = loc.Offset(0, OffSetRows).Value 
     Exit Function 
    End If 
    If FirstFound Is Nothing Then 
     Set FirstFound = loc 
    ElseIf loc = FirstFound Then 
     NonBlankLookup = CVErr(2000) 
     Exit Function 
    End If 
    Set loc = LookIn.Find(what:=SearchTxt, after:=loc) 
Wend 
NonBlankLookup = CVErr(2000) 
End Function 

использовать, вставить этот код в модуль, то в вашей таблице Excel, вы можете использовать формулу, такую ​​как =NonBlankLookup(E1,$A$1:$A$6,1), которая будет искать ваш текст в A1: A6, и отметьте 1 столбец справа. Если текст не найден, который соответствует строке поиска, или если текст найден, но данные не указаны в указанном столбце, #NULL! Возвращается.
Это также имеет небольшое преимущество для vlookup, так как это позволит отрицательное смещение, так что вы можете иметь текст поиска в столбце 2 и используя -1 для смещения, вы можете вернуть данные из столбца 1

Просто так что вы знаете, из-за того, как работает .find, когда вы укажете диапазон, он начнется с ячейки и спустится вниз и начнет поиск первой ячейки, которую вы дадите последнему.
, например. с моим примером A1: A6, он будет искать A2, A3, A4, A5, A6 и, наконец, A1

Смежные вопросы