Word найти в ячейке

12 / 11 / 3

Регистрация: 07.09.2015

Сообщений: 256

21.04.2020, 13:45

7

Narimanych,

Цитата
Сообщение от Narimanych
Посмотреть сообщение

Кикие следующие действия после нахождения?

Да там, задача простая. В определённой таблице (именно в таблице №7) найти текст в строке, (например: «Отчёт №3», а их например всего пять),

и удалить все строки

(со столбцами)

идущие до этого текста

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

Цитата
Сообщение от Narimanych
Посмотреть сообщение

Visual Basic
1
2
3
4
5
6
7
Sub MMM()
For i = 1 To Word.ActiveDocument.Tables.Count
   For Each C In ActiveDocument.Tables(i).Range.Cells
   If C.Range.Text Like "*AA*" Then MsgBox ("Table #:" & i & Chr(13) & "Row:" & C.RowIndex & Chr(13) & "Column:" & C.ColumnIndex)
   Next
Next
End Sub

Блин, спасибо! Красивая реализация!
Вот совсем запамятовал про Метод «Like»
И с

Visual Basic
1
For Each C In ActiveDocument.Tables(i).Range.Cells

тоже круто Нуб я в Word…

Не по теме:

Думаю: Т.к. мне искать только в одной таблице, всё ок.
А вот если перебирать каждую ячейку, например в 10 таблицах, то конечно, возможно, метод «Like» не так быстро справится как метод «Find». (не стану писать, что подвиснет, но … есть немного похожий код с выравниванием, вот там тоже все ячейки перебираются, ворд, как-то с этим грустно, справляется).

Добавлено через 24 минуты
Narimanych,

Цитата
Сообщение от Narimanych
Посмотреть сообщение

Кикие следующие действия после нахождения?

На самом деле, ещё один нюанс. Надо будет, потом, после строки (заголовка — «Отчёт №6», она без столбцов) найти максимальное число в последних 4 столбцах (всего столбцов 8).
Хотя опять же, уверен с этим справлюсь.

Не по теме:

Цитата
Сообщение от Schumacher57
Посмотреть сообщение

А вот если перебирать каждую ячейку, например в 10 таблицах, то конечно, возможно, метод «Like» не так быстро справится как метод «Find»

Зря. Всё чётко, и быстро отработал. Проверил, сейчас.



0



Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

1 23.06.2017 09:07:50

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Тема: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Здравствуйте!
Необходимо найти ячейку с нужным текстом. Как правильно искать?
Есть вот такая идея, прошу отредактировать, так как это только алгоритм, сам код кривой:
Поиск по строкам таблицы, а внутри строки — по ячейкам

Dim iStr, iCol As Integer
For iStr = 1 To .Table.Count
For iCol = 1 To .Cells.Count
  Find.Text = "искомый текст"
  MsgBox (ячейка с искомым текстом)
Next
Next

Прошу правильно записать этот код. Или код с функцией For Each. Или ещё какой-нибудь способ.
Спасибо.

2 Ответ от MrBrown 23.06.2017 09:26:49

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Вопрос снят: нашел несколько решений здесь:
внешняя ссылка

3 Ответ от MrBrown 24.06.2017 13:55:31

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Увы, рано закрыл вопрос.
Туплю чего-то. Не получается.
Вот часть кода:

n = oDoc.Tables(2).Rows.Count 'количество строк таблицы
m = oDoc.Tables(2).Columns.Count  'количество столбцов таблицы
For i = 1 To n
For j = 1 To m
   With oDoc.Tables(2).Range
      .Find.ClearFormatting
      .Find.Text = "контроля:"       'Ищем вхождения текста
      .Wrap = wdFindStop
      If .found = True Then
            MsgBox i & "-" & j   'Номера строки и столбца с искомым вхождением
         Else
            MsgBox "нет"
         End If
   End With
Next
Next

Здесь MsgBox последовательно выдает все строки и столбцы. А мне надо получить индекс самой первой ячейки с нужным вхождением.
И ещё вопрос: как искать ячейку, введя только часть текста, например «контр»?
p.s. ну и прошу поправить код в смысле культуры оформления.
Спасибо.

4 Ответ от Fck_This 26.06.2017 10:10:45

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

MrBrown пишет:

Увы, рано закрыл вопрос.
Туплю чего-то. Не получается.
И ещё вопрос: как искать ячейку, введя только часть текста, например «контр»?
p.s. ну и прошу поправить код в смысле культуры оформления.
Спасибо.

Эммм
Лучше искать так

Sub ValueOfCell()
'Запоминаем текст ячейки в переменную
Dim sValue
Dim oCell As Cell
Dim oDoc As Document
Set oDoc = ActiveDocument
For Each oCell In oDoc.Tables(2).Cell
    If InStr(oCell.Range.Text, "контроля:") >= 1 Then
        sValue = oCell.Range.Text
        MsgBox sValue
    End If
Next oCell
End Sub

Ну и, понятное дело, если часть текста будете искать, то часть и указываете
Ещё можно методом Selection.Find.Execute искать по всему документу и проверять найденную строку на вхождение в таблицу 2, заранее установив область начала и конца таблицы.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

5 Ответ от MrBrown 26.06.2017 12:14:20

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Почему-то выскакивает такая ошибка:
User-defined type not defined
Как в коде определить этот тип?

6 Ответ от MrBrown 26.06.2017 12:16:16

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Забыл сообщить: ругается на строчку
Dim oCell As Cell (выделяет жёлтым)

7 Ответ от Fck_This 26.06.2017 15:15:40

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Пардон. Надо так. Не проверял на документе

Sub ValueOfCell()
'Запоминаем текст ячейки в переменную
Dim sValue As String
Dim oCell As Cell
Dim oDoc As Document
Set oDoc = ActiveDocument
For Each oCell In oDoc.Tables(1).Range.Cells
    If InStr(oCell.Range.Text, "контроля:") >= 1 Then
        sValue = oCell.Range.Text
        MsgBox sValue
    End If
Next oCell
End Sub

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

8 Ответ от MrBrown 27.06.2017 09:57:26

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Всё равно ругается на эту же строчку.

9 Ответ от shanemac51 27.06.2017 11:22:32

  • shanemac51
  • генерал-полковник
  • Неактивен
  • Зарегистрирован: 05.03.2012
  • Сообщений: 467
  • Поблагодарили: 119

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

и какой же текст ругани

у меня все работает

10 Ответ от shanemac51 27.06.2017 11:25:39

  • shanemac51
  • генерал-полковник
  • Неактивен
  • Зарегистрирован: 05.03.2012
  • Сообщений: 467
  • Поблагодарили: 119

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

какая у вас версия и разрядность ВИНДОВС
и офиса

32 или 64

11 Ответ от MrBrown 27.06.2017 11:34:15

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Ругается вот так:
User-defined type not defined
на строку
Dim oCell As Cell
Система Win 8.1 х 64
Офис 2013.
И система и офис — легальные.

12 Ответ от MrBrown 27.06.2017 11:36:25

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Полное содержание ошибки:

Compile error:
User-defined type not defined

13 Ответ от yshindin 27.06.2017 11:44:27

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

MrBrown пишет:

Ругается вот так:
User-defined type not defined
на строку
Dim oCell As Cell
Система Win 8.1 х 64
Офис 2013.
И система и офис — легальные.

Попробуйте использовать oCell как объект общего вида:
Dim oCell as Object

14 Ответ от shanemac51 27.06.2017 13:15:20

  • shanemac51
  • генерал-полковник
  • Неактивен
  • Зарегистрирован: 05.03.2012
  • Сообщений: 467
  • Поблагодарили: 119

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

может у вас битая ссылка(например типа Календарь)
какая разрядность офиса  (32 или 64)

15 Ответ от MrBrown 27.06.2017 13:48:16

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Офис 2013 х32

16 Ответ от Fck_This 27.06.2017 13:56:24

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97
  • За сообщение: 1

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

MrBrown пишет:

Офис 2013 х32

В этом случае, мне помнится, не играет роль версия ворда
Пробуйте так

Sub ValueOfCell()
'Запоминаем текст ячейки в переменную
Dim sValue As String
Dim oDoc As Document
Set oDoc = ActiveDocument
For Each Cell In oDoc.Tables(1).Range.Cells
    If InStr(Cell.Range.Text, "контроля:") >= 1 Then
        sValue = Cell.Range.Text
        MsgBox sValue
    End If
Next Cell
End Sub

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

17 Ответ от MrBrown 27.06.2017 14:09:31

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Работает!
Прошу извинить, это я сам недоглядел: в самом начале макроса уже было такое:

Dim oDoc As Object
Set oDoc = WD.Documents.Open(Filename:=File)

Видимо, по этой причине не работало.
Сейчас работает.
Только мне нужен не сам текст, а адрес ячейки, в которой он находится, чтобы от неё дальше плясать.
Надо что-то типа такого:
MsgBox [№ строки, № столбца]

18 Ответ от Fck_This 27.06.2017 14:20:21

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

MrBrown пишет:

Работает!
Прошу извинить, это я сам недоглядел: в самом начале макроса уже было такое:

Dim oDoc As Object
Set oDoc = WD.Documents.Open(Filename:=File)

Видимо, по этой причине не работало.
Сейчас работает.
Только мне нужен не сам текст, а адрес ячейки, в которой он находится, чтобы от неё дальше плясать.
Надо что-то типа такого:
MsgBox [№ строки, № столбца]

Вы опять идете в ту же ловушку зависимости от адреса ячейки. Зачем знать адрес ячейки, если он не статичен?!
Можно использовать RowIndex & ColumnIndex

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

19 Ответ от MrBrown 27.06.2017 14:20:36

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

MsgBox cell.Row & cell.Column

не работает

20 Ответ от MrBrown 27.06.2017 14:24:19

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Именно по этой причине, что — не статичен!
В каком-то акте Word эта ячейка, допустим, на 24-й строке, в другом акте — на 25-й строке.
А в следующей ячейке — нужная мне инфа, которую надо загнать в реестр Excel.
Если привязаться только к 24-й строке жёстко, то нужная инфа из другого (кривого) файла Word запишется криво, не та и не в те ячейки.
Я же пробовал.

21 Ответ от MrBrown 27.06.2017 14:26:22

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Я вижу, что всех работников «под одну гребенку» не причешешь:
нет-нет, да найдется «тётенька», которой, ну, жизненно необходимо добавить ещё одну строчку в акте Word!

22 Ответ от Fck_This 27.06.2017 14:31:48

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

MrBrown пишет:

Я вижу, что всех работников «под одну гребенку» не причешешь:
нет-нет, да найдется «тётенька», которой, ну, жизненно необходимо добавить ещё одну строчку в акте Word!

Так а смысл вам обращаться к ячейке, если вы уже осуществляете поиск по тексту?

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

23 Ответ от MrBrown 27.06.2017 14:32:59

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Опечатка:
добавить не строчку в текст , а строку в таблицу.
Ну или разделить/объединить ячейки таблицы.
И данный акт Word автоматом становится «кривым».

24 Ответ от MrBrown 27.06.2017 14:41:37

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Для понимания прикладываю шаблон акта Word.
Допустим, макрос нашел текст во второй таблице:
«2. Работы выполнены по проектной документации».
Но мне нужен не этот текст, а следующий за ним (выделен красным).
А если эта документация занимает не две, а пять-шесть строчек, то их приходится добавлять инженеру.
А раз строчки добавлены, значит строчки начала и конца работы тоже «сползут» вниз.
Так вот я стремлюсь все нужные данные «привязать» к своим текстам, выполненным шрифтом Bold.
Макрос ищет очередной текст и вставляет в реестр НЕ ЕГО, А СЛЕДУЮЩИЙ ЗА НИМ!
Подскажите метод, который считаете лучшим.
Спасибо.

Post’s attachments

Word.docx 21.13 Кб, 2 скачиваний с 2017-06-27 

You don’t have the permssions to download the attachments of this post.

25 Ответ от Fck_This 27.06.2017 14:51:24

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Я бы находил текст, переходил на следующую ячейку, брал текст и переходил дальше — Если пусто или если маркер — переход на следующий поиск. Если текст — добавляем текст и идём дальше. В Ворде существует серьёзная проблема с обращением к ячейкам по их адресу в тех таблицах, где существуют объединённые ячейки.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

26 Ответ от MrBrown 27.06.2017 14:58:23

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Я бы то же так сделал бы, если б знал smile)
Вопрос: как перейти на следующую ячейку?
Это главное на сей момент.

27 Ответ от MrBrown 27.06.2017 14:59:27

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

С offset-ом у меня беда…

28 Ответ от MrBrown 27.06.2017 15:04:41

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Вопрос: что такое маркер?
Ну, применительно к моей проблеме.

29 Ответ от shanemac51 27.06.2017 15:18:43

  • shanemac51
  • генерал-полковник
  • Неактивен
  • Зарегистрирован: 05.03.2012
  • Сообщений: 467
  • Поблагодарили: 119

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

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

30 Ответ от shanemac51 27.06.2017 16:13:00

  • shanemac51
  • генерал-полковник
  • Неактивен
  • Зарегистрирован: 05.03.2012
  • Сообщений: 467
  • Поблагодарили: 119

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

не совсем четко, но получила

Sub ValueOfCell_170627()
'Запоминаем текст ячейки в переменную
Dim sValue As String
Dim c1 As Cell, s1, k1, k2
Dim oDoc As Document
Set oDoc = ActiveDocument
Dim tbl As Table
k1 = 0
k2 = 0
For Each tbl In Word.ActiveDocument.Tables
tbl.Select
For Each c1 In Selection.Cells
s1 = Replace(c1.Range.Text, Chr(13), " ")
s1 = Replace(s1, Chr(10), " ")
s1 = Replace(s1, Chr(9), " ")
s1 = Replace(s1, Chr(7), " ")
s1 = Replace(s1, Chr(11), " ")


s1 = Replace(s1, "  ", " ")

If c1.Range.Font.Size < 7 Then s1 = ""

If s1 Like "5. *" Then
Debug.Print
Debug.Print s1;

k1 = 0
k2 = 0
s1 = ""
ElseIf s1 Like "[12346789]. *" Then
Debug.Print
'Debug.Print s1;

k1 = 0
k2 = 8
s1 = ""
ElseIf s1 Like "требованиям:*" Then
k1 = 0
k2 = 8
s1 = ""
''требованиям:

ElseIf s1 Like "Дополнительные сведения*" Then
k1 = 0
k2 = 0

ElseIf s1 Like "№ *" Then   ''№ 000/2.15-КЖ
Debug.Print
 Debug.Print s1
 k1 = 0
 k2 = 0
ElseIf s1 Like "*20??г*" Then  '' "15" марта 2017г
Debug.Print
 Debug.Print s1
 k1 = 0
 k2 = 0
Else
''
End If
k1 = k1 + 1

If k1 < k2 And k1 > 0 And Len(s1) > 0 Then
If k1 = 1 Then
Debug.Print
Debug.Print s1; " ";
Else
Debug.Print s1; " ";
End If
End If
Next c1
Next tbl

'''№ 0 / 2.15 - КЖ
'''
'''«15» марта 2017г.
'''
'''Установка опалубки    фундаментов в/о А-С/1-2 отм. +(55.600?58.100).
'''ООО «[наименование ООО]»   2.15-КЖ Лист 2
'''   
'''         
'''5. Даты: начала работ «10» марта 2017г.     окончания работ «14» марта 2017г.
End Sub

31 Ответ от MrBrown 29.06.2017 07:33:23

  • MrBrown
  • лейтенант
  • Неактивен
  • Зарегистрирован: 13.06.2017
  • Сообщений: 41

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

shanemac51, спасибо за отклик, но увы, сколько ни бился, у меня всегда выскакивает какая-нибудь ошибка. Много ещё не понимаю.
Сейчас пока (с великой благодарностью) пользуюсь макросом, предложенным мне Fck_This (см. в приложенном файле-реестре). С этим макросом из десятка обработанных актов Word два-три вставляются криво, это потому, что сами акты Word кривые — с добавленными/убавленными строками, объединёнными/разбитыми ячейками. Такие акты заношу в реестр вручную.
Буду весьма признателен, если Вы доработаете именно этот макрос применительно к моим «хотелкам»:
1. Находить нужные данные и вставлять их в реестр Excel несмотря на добавление/удаление строк в актах Word, объединение/разбиение ячеек.
2. Запоминать последнюю выбранную директорию и начинать новую сессию именно с неё.
Спасибо.
p.s. Все записи в файле Word, выполненные шрифтом Bold — неизменные. Их никогда не удаляют и не редактируют. К ним и нужно привязываться.

Post’s attachments

Реестр АОСР.xls 40 Кб, 2 скачиваний с 2017-06-29 

You don’t have the permssions to download the attachments of this post.

32 Ответ от Alexsh 26.12.2017 18:24:04

  • Alexsh
  • рядовой
  • Неактивен
  • Зарегистрирован: 26.12.2017
  • Сообщений: 1

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Доброго времени суток !Если есть вариант,помогите полжалуйста в поиске решения.После выполнения Макроса(копирование и вставка Таблицы) при определенном условии(при определенном изменении ячейки),не могу эту самую таблицу заполнить,Макрос удаляет лишнее,и оставляет только то,что было в него записано макрорекордером.Вопрос.Как его остановить в строке vba,что бы когда нужно(при изменении значения ячейки)  он срабатывал,но потом не мешал эту самую таблицу заполнять?Заранее благодарю за полезный ответ!

Private Sub Worksheet_Change(ByVal Target As Range)
     If Cells(3, 2) =

33 Ответ от Fck_This 27.12.2017 10:06:04

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

Alexsh пишет:

Доброго времени суток !Если есть вариант,помогите полжалуйста в поиске решения.После выполнения Макроса(копирование и вставка Таблицы) при определенном условии(при определенном изменении ячейки),не могу эту самую таблицу заполнить,Макрос удаляет лишнее,и оставляет только то,что было в него записано макрорекордером.Вопрос.Как его остановить в строке vba,что бы когда нужно(при изменении значения ячейки)  он срабатывал,но потом не мешал эту самую таблицу заполнять?Заранее благодарю за полезный ответ!Private Sub Worksheet_Change(ByVal Target As Range)     If Cells(3, 2) =

Как я понял — вам надо сделать так, чтобы макрос заполнял только пустые? Или как?Не знаю, что там с вашим методом — использую книжный (Создаём в модуле

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

34 Ответ от Fck_This 27.12.2017 10:10:39

  • Как просканировать всю таблицу в поисках ячейки с нужным текстом?
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Как просканировать всю таблицу в поисках ячейки с нужным текстом?

КАПЧА ОБРЕЗАЕТ!!

Alexsh пишет:

Доброго времени суток !Если есть вариант,помогите полжалуйста в поиске решения.После выполнения Макроса(копирование и вставка Таблицы) при определенном условии(при определенном изменении ячейки),не могу эту самую таблицу заполнить,Макрос удаляет лишнее,и оставляет только то,что было в него записано макрорекордером.Вопрос.Как его остановить в строке vba,что бы когда нужно(при изменении значения ячейки)  он срабатывал,но потом не мешал эту самую таблицу заполнять?Заранее благодарю за полезный ответ!

Private Sub Worksheet_Change(ByVal Target As Range)
     If Cells(3, 2) =

Как я понял — вам надо сделать так, чтобы макрос заполнял только пустые? Или как?
Не знаю, что там с вашим методом — использую книжный (Создаём в модуле «Эта книга»)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    sCell = Target.Address ‘Эта строка покажет адрес изменяемой ячейки
    sValue = Target ‘Эта строка покажет введённый текст
     If Target = «Hello World» Then
     ‘Это условие позволит выполнить действие при условии, что содержимое изменяемой ячейки
     ‘соответствует необходимое. В этом промежутке указываем то, что нужно выполнить
     End If
     ‘Если надо найти вхождение текста в текст ячейки, то используем:
     If InStr(Target, «Hello») >= 1 Then
     ‘Указываем, что надо сделать
     End If
End Sub

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

Предположим, вам нужно убедиться, что столбец содержит текст, а не числа. Или, возможно, вам нужно найти все заказы, соответствующие конкретному продавцу. Если вы не беспокоите текст в верхнем или нижнем регистре, можно проверить, содержит ли ячейка текст несколькими способами.

Для поиска текста также можно использовать фильтр. Дополнительные сведения см. в теме Фильтрация данных.

Поиск ячеек, содержащих текст

Чтобы найти ячейки, содержащие определенный текст, выполните указанные здесь действия.

  1. Вы диапазон ячеек, в которые нужно в поиске.

    Чтобы найти результат поиска на всем из них, щелкните любую ячейку.

  2. На вкладке Главная в группе Редактирование нажмите кнопку Найти и & выберите, а затем нажмите кнопку Найти.

    Параметр "Найти" на ленте

  3. В поле Найти введите текст (или числа), который нужно найти. Вы также можете выбрать недавний поиск в поле Найти.

    Примечание: В условиях поиска можно использовать поддеревные знаки.

  4. Чтобы указать формат поиска, нажмите кнопку Формат и сделайте выбор во всплыващем окне Найти формат.

  5. Нажмите кнопку Параметры, чтобы дополнительно определить поиск. Например, можно найти все ячейки, содержащие данные одного типа, например формулы.

    В поле Внутри можно выбрать лист или книгу для поиска на листе или во всей книге.

  6. Нажмите кнопку Найти все или Найти далее.

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

Примечание:  Чтобы остановить поиск, нажмите клавишу ESC.

Проверьте, есть ли в ячейке текст

Для этого используйте функцию ЕТЕКСТ.

Примеры ЕТЕКСТ

Проверка того, совпадает ли ячейка с определенным текстом

Используйте функцию ЕСЛИ для возврата результатов для заского условия.

Примеры ЕСЛИ

Проверка того, совпадает ли часть ячейки с определенным текстом

Для этого используйте функции ЕСЛИ,ПОИСКи Е ЧИСЛОЭЛЕБР.

Примечание: Функция ПОИСК не имеет чувствительность к делу.

Примеры if, ISNUMBER и SEARCH

Нужна дополнительная помощь?

На днях решал задачу с заменой символов в уже созданном файле с большим количеством строк Word. Не секрет, что функции найти и заменить в Excel и Word, могут очень облегчить жизнь для многих задач. Например, заменить точку на запятую. Поэтому для вас постараюсь структурировать знания по этим эффективным инструментам (пригодится и в других программах).

Найти и заменить в Excel

Для начала, разберемся как вызвать эту функцию и как ее настроить.

Содержание

  • Найти и заменить в Excel. Настройка
  • Найти и заменить. Нюансы
  • Как найти и заменить в Excel формулой
  • Похожие статьи

Найти и заменить в Excel. Настройка

Для начала выделите диапазон ячеек, с которым нужно поработать (если выделена одна ячейка, Excel проводит поиск во всем листе). Перейдите по вкладке Главная — группа Редактирование, выберите Найти и выделить — нажмите Найти (или нажмите сочетание клавиш Ctrl + F), заменить доступно по горячим клавишам Ctrl + H.

Введите тест для поиска, например Иван (в поле Найти:) — т.е. вы хотите найти слово Иван во всех ячейках

Кнопка Найти далее будет находится по одной ячейки за каждое нажатие. Если вы нажмете Найти все, Excel отобразит список адресов всех ячеек.

Хитрость. Если при этом выделить ячейки в результатах поиска прямо в окне (ctrl+a) все найденные ячейки выделятся и их можно подкрасить цветом или отредактировать, как вам нравиться.

найти и заменить в Excel

Найти и заменить. Нюансы

Соответственно, чтобы заменить ячейки в поле Замена: нужно ввести, то на что заменяете. Т.е. если вы заменяете точку на запятую, в поле Найти — ставим точку, а в поле Заменить — на запятую

Иногда нужно найти неточные данные. Предположим, нужно найти Иван Иванов, но точное отчество вы не помните. При поиске такого имени можно использовать символы подстановки.

  • ? — заменяет любой 1 символ;
  • * — заменяет любые символы.

В итоге, введите *Иван*Иванов в поле Найти, а затем нажмите кнопку Найти все. В результатах поиска выпадут все значения, где встречается Иван_какие-то символы_ Иванов.

Можно использовать эти возможности и для поиска чисел. Если в строке поиска записать 7*, в результате отобразятся все ячейки, содержащие значения, начинающееся с 7. Если ввести 3?5*, то получите все четырехзначные и более записи, которые начинаются с 3, второй символ будет любой, а после 5 может любое количество символов.

Чтобы найти саму звездочку (*) или вопросительный знак (?) поставьте перед ними тильду (~), т.е. ~* или ~?. Как искать саму тильду? Ставьте две тильды ~~.

Если что-то найдено неправильно, проверьте настройки:

  • Флажок Учитывать регистр — значит поиск учитывает регистр больших и маленьких букв, т.е. если написать «иван» с маленькой буквы, то поиск не даст результаты в нашем случае.
  • Флажок Ячейка целиком — т.е. в ячейки нет других символов кроме тех, которые вы ищите.

Функция хранит до пяти вариантов предыдущих замен, чтобы их просмотреть нужно нажать на флажок справа от текстовой строки

Найти и заменить сохранение

Как найти и заменить в Excel формулой

Для альтернативного поиска ячеек существует функции Найти (FIND) и Поиск (SEARCH). Обе функции возвращают номер символа, с которого начинается первое слово искомой строки. Эти две функции работают почти одинаково, но функция НАЙТИ учитывает регистр букв, а функция ПОИСК допускает использование символов шаблона

=НАЙТИ(искомый_текст;просматриваемый_текст;нач_позиция)

=ПОИСК(искомый_текст;просматриваемый_текст;нач_позиция)

Если вы ищете имя Иван (искомый_текст), в тексте Петров Иван (просматриваемый_текст), нач_позиция можно не заполнять. Excel вернет номер символа в строке просматриваемый_текст, т.е. в нашем примере это будет число 8.

Работая с текстом, особенно с большими объемами, зачастую необходимо найти слово или кусок текста. Для этого можно воспользоваться поиском по тексту в Ворде. Существует несколько вариантов поиска в Word:

  • Простой поиска, через кнопку «Найти» (открывается панель Навигация);
  • Расширенный поиск, через кнопку «Заменить», там есть вкладка «Найти».

Самый простой поиск в ворде – это через кнопку «Найти». Эта кнопка расположена во вкладке «Главная» в самом правом углу.

поиск по тексту в ворде

! Для ускорения работы, для поиска в Ворде воспользуйтесь комбинацией клавишей: CRL+F

После нажатия кнопки или сочетания клавишей откроется окно Навигации, где можно будет вводить слова для поиска.

поиск в ворде

! Это самый простой и быстрый способ поиска по документу Word.

Для обычного пользователя большего и не нужно. Но если ваша деятельность, вынуждает Вас искать более сложные фрагменты текста (например, нужно найти текст с синим цветом), то необходимо воспользоваться расширенной формой поиска.

Расширенный поиск в Ворде

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

Существует 3 варианта вызова расширенного поиска:

  • В панели навигация, после обычного поиска

поиск слов в ворде

  • На кнопке «Найти» нужно нажать на стрелочку вниз

как найти слово в тексте word

  • Нужно нажать на кнопку «Заменить» , там выйдет диалоговое окно. В окне перейти на вкладку «Найти»

как найти в ворде слово в тексте

В любом случае все 3 варианта ведут к одной форме – «Расширенному поиску».

Как в Word найти слово в тексте – Расширенный поиск

После открытия отдельного диалогового окна, нужно нажать на кнопку «Больше»

поиск по документу word

После нажатия кнопки диалоговое окно увеличится

как найти в ворде нужное слово

Перед нами высветилось большое количество настроек. Рассмотрим самые важные:

Направление поиска

В настройках можно задать Направление поиска. Рекомендовано оставлять пункт «Везде». Так найти слово в тексте будет более реально, потому что поиск пройдет по всему файлу. Еще существуют режимы «Назад» и «Вперед». В этом режиме поиск начинается от курсора и идет вперед по документу или назад (Вверх или вниз)

Направление поиска в Ворде

Поиск с учетом регистра

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

Поиск с учетом регистра

Поиск по целым словам

Если нажать на вторую галочку, «Только слово целиком», то поиск будет искать не по символам, а по целым словам. Т.е. если вбить в поиск только часть слова, то он его не найдет. Напимер, необходимо найти слово Ворд, при обычном поиске будут найдены все слова с разными окончаниями (Ворде, Ворду), но при нажатой галочке «Только слова целиком» этого не произойдет.

Поиск целых слов

Подстановочные знаки

Более тяжелый элемент, это подстановочные знаки. Например, нам нужно найти все слова, которые начинаются с буквы м и заканчиваются буквой к. Для этого в диалоговом окне поиска нажимаем галочку «Подстановочные знаки», и нажимаем на кнопку «Специальный», в открывающемся списке выбираем нужный знак:

Подстановочные знаки

В результате Word найдет вот такое значение:

поиск с подстановочными знаками

Поиск омофонов

Microsoft Word реализовал поиск омофонов, но только на английском языке, для этого необходимо выбрать пункт «Произносится как». Вообще, омофоны — это слова, которые произносятся одинаково, но пишутся и имеют значение разное. Для такого поиска необходимо нажать «Произносится как». Например, английское слово cell (клетка) произносится так же, как слово sell (продавать).

Поиск омофонов

! из-за не поддержания русского языка, эффективность от данной опции на нуле

Поиск по тексту без учета знаков препинания

Очень полезная опция «Не учитывать знаки препинания». Она позволяет проводить поиск без учета знаков препинания, особенно хорошо, когда нужно найти словосочетание в тексте.

Поиск по тексту без учета знаков препинания

Поиск слов без учета пробелов

Включенная галочка «Не учитывать пробелы» позволяет находить словосочетания, в которых есть пробел, но алгоритм поиска Word как бы проглатывает его.

Поиск слов без учета пробелов

Поиск текста по формату

Очень удобный функционал, когда нужно найти текст с определенным форматированием. Для поиска необходимо нажать кнопку Формат, потом у Вас откроется большой выбор форматов:

Поиск текста по формату

Для примера в тексте я выделил Жирным текст «как найти слово в тексте Word». Весть текст выделен полужирным, а кусок текста «слово в тексте Word» сделал подчернутым.

В формате я выбрал полужирный, подчеркивание, и русский язык. В итоге Ворд наше только фрагмент «слово в тексте». Только он был и жирным и подчеркнутым и на русском языке.

Поиск текста по формату

После проделанных манипуляция не забудьте нажать кнопку «Снять форматирование». Кнопка находится правее от кнопки «Формат».

Специальный поиск от Ворд

Правее от кнопки формат есть кнопка «Специальный». Там существует огромное количество элементов для поиска

Специальный поиск от Ворд

Через этот элемент можно искать:

  • Только цифры;
  • Графические элементы;
  • Неразрывные пробелы или дефисы;
  • Длинное и короткое тире;
  • Разрывы разделов, страниц, строк;
  • Пустое пространство (особенно важно при написании курсовых и дипломных работ);
  • И много других элементов.

Опции, которые не приносят пользы

!Это мое субъективное мнение, если у вас есть другие взгляды, то можете писать в комментариях.

  • Опция «произносится как». Не поддержание русского языка, делает эту опцию бессмысленной;
  • Опция «все словоформы», опция полезная при замене. А если нужно только найти словоформы, то с этим справляется обычный поиск по тексту;
  • Опция «Учитывать префикс» и «Учитывать суффикс» – поиск слов, с определенными суффиксами и префиксами. Этот пункт так же полезен будет при замене текста, но не при поиске. С этой функцией справляется обычный поиск.

Like this post? Please share to your friends:
  • Word название файла при сохранении
  • Word название файла в тексте
  • Word название таблицы стиль
  • Word название рисунка на английском
  • Word название главы в колонтитул