powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / поиск ячейки в excel
27 сообщений из 27, показаны все 2 страниц
поиск ячейки в excel
    #36249558
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро Всем! Столкнулся с проблемой, не большой.
Вывожу прайс из access'a в excel. Товар распределен по группам, типа:
Группа: "Товар1"
1.ваааааааааааааааааааааа
2.вааааааааааааааааааааава
Группа: "Товар2"
---------------------------------------------------
---------------------------------------------------
Мне необходимо Название группы выделить и изменить шрифт.

Как мне это сделать?
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36249685
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал искать по слову "Группа:". но при выполнении весь текст выделился....
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36249872
Фотография by-pass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно так
Код: plaintext
1.
2.
                .Rows("1:1").Select
                .Selection.Font.Bold = True
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36249889
astatsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kraus

а что если слово "Группа" и название группы помещать в разные ячейки, потом находить слово "Группа" и менять шрифт в ячейке справа от этой.
Можно конечно и так:
найти слово группа и
Cell(i,j).Characters(Start:=9, Length:=len).Font.Bold = true
где len - длина названия группы
А вообще, Сервис->Макрос->Начать запись...
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36251503
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахожу ячейку со словом "Группа:" и меняю шрифт.
Но у меня строк таких несколько, а шрифт меняет только в одной строке.
Подскажите, подалуйста, как мне цикл составить, чтобы все строки проверялись....?
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36251538
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как я ее искал и форматировал:

Set obj1 = .Cells.Find("Группа:")
obj1.Font.Bold = True
obj1.Font.Size = 14
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36251632
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу дать пример кода поиска:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Sub compare5()

Set Target = ThisWorkbook.Sheets( 1 ).UsedRange.Columns( 2 ).Cells

For Each cc In Target 'цикл по используемым ячейкам втрой колонки
a = cc.Rows.Row 'номер ряда анализируемй ячейки
flag =  0  'флаг совпадения

Set x = ThisWorkbook.Sheets( 1 ).Columns( 6 ).Find(ThisWorkbook.Sheets( 1 ).Cells(a,  2 ), _
    LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True) 'поиск полного совпадения _
    по  6 -ой колонке значения из  2 -ой колонки  1 -го файла
    
If x Is Nothing Then ' если не нашли, уходим на след.поиск
GoTo goout
Else
    iFirstAddress = x.Address 'запоминаем адрес первого совпадения
    
            If Cells(a,  3 ).Value = Cells(x.Rows.Row,  7 ).Value Then
            flag =  1  'если пара совпадает, ставим пометку
            GoTo goout  ' уходим на след.поиск
            End If
            
    Do ' запускаемся на поиск след.совпадений
    Set x = ThisWorkbook.Sheets( 1 ).Columns( 6 ).FindNext(x)
    iSecondAddress = x.Address 'запоминаем адрес следующего совпадения
    
        If Cells(a,  3 ).Value = Cells(x.Rows.Row,  7 ).Value Then
        flag =  1  'если пара совпадает, ставим пометку и
        Exit Do ' выходим в итоге совсем из поиска
        End If
        
    Loop While iFirstAddress <> iSecondAddress 'ищем, пока не вернёмся на первое совпадение
    
End If

goout: 'процедура выхода из цикла поиска
If flag =  0  Then _
Cells(a,  4 ).Value = Cells(a,  1 ).Value & " " & Cells(a,  2 ).Value & " " & Cells(a,  3 ).Value
        'если нет результата поиска или пара не совпадает, тогда пишем пометку в 4-ю ячейку
Next 'следующая ячейка

End Sub
Здесь задача немного другая, но главное в Вашей задаче - искать все совпадения, While iFirstAddress <> iSecondAddress 'ищем, пока не вернёмся на первое совпадение.
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36251667
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или вот, поиск по всем листам:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Sub kraus()
      iValue = "Группа:"
      
For Each iList In Worksheets

Set iFinds = iList.UsedRange.Find(iValue, LookIn:=xlValues)

If Not iFinds Is Nothing Then

iFirstAddress = iFinds.Address
        
Do

'сюда надо прикрутить Ваш код:
'Set obj1 = .Cells.Find("Группа:") - это меняем на
Set obj1 = iFinds
obj1.Font.Bold = True
obj1.Font.Size =  14 

iFindValue = iFindValue & vbCrLf & iList.Name & " - " & iFinds.Address & " - " & iFinds.Value
iCount = iCount +  1 

Set iFinds = iList.UsedRange.FindNext(iFinds)

Loop While Not iFinds Is Nothing And iFinds.Address <> iFirstAddress
    
End If

Next

If iCount >  0  Then

MsgBox iFindValue, , "Количество найденных совпадений : " & iCount
End If

End Sub

В конце MsgBox можно и отключить. Проверено, работает.
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36251684
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, вот и поиск по активному листу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub KrausShort()
      iValue = "Группа:"
      
Set iFinds = ActiveSheet.UsedRange.Find(iValue, LookIn:=xlValues)

If Not iFinds Is Nothing Then

iFirstAddress = iFinds.Address
        
Do
Set obj1 = iFinds
obj1.Font.Bold = True
obj1.Font.Size =  14 

Set iFinds = ActiveSheet.UsedRange.FindNext(iFinds)

Loop While Not iFinds Is Nothing And iFinds.Address <> iFirstAddress
    
End If

End Sub
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36251735
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А какого типа переменные iFirstAddress и iFinds?
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36252102
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавь в код
Код: plaintext
1.
Debug.Print iFinds
Debug.Print iFirstAddress
Получишь результат:
Код: plaintext
1.
2.
Группа:
$I$ 22 
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36252108
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, Огромное Вам спасибо за помощь!

Все работает как надо.
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36252163
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот еще вопрос возник интересный.

Есть строка "Дата: Z2". Нужно вместо "Z2" вставить текущую дату.

В заданную ячейку то я без проблем вставляю, а вот как заменить именно часть текста
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36252199
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может заменить как часть строки

str = Left(str, 6) & Now()
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36252209
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub tt()
Dim str As Variant
str = "Дата: Z2"
str = Left(str,  6 ) & Format(Now(), "DD.MM.YYYY")
MsgBox str

End Sub
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #36252257
kraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не стал заморачиваться. :-) Пошел более простым путем:

.ActiveSheet.Cells.Find("Z2") = "Дата:" + " " + CStr(Date)

Спасибо за отзыв.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
поиск ячейки в excel
    #37014943
yura31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброе время суток
что бы не создавать новую тему спрошу здесь
подскажите плиз как например ниже приведенный код макроса excel (VBA), перевести на VBS чтобы можна было запускать (с внешнего скрипта *.vbs) его не заходя в файл excel.
Большое спасибо!

Hugo121Короче, вот и поиск по активному листу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub KrausShort()
      iValue = "Группа:"
      
Set iFinds = ActiveSheet.UsedRange.Find(iValue, LookIn:=xlValues)

If Not iFinds Is Nothing Then

iFirstAddress = iFinds.Address
        
Do
Set obj1 = iFinds
obj1.Font.Bold = True
obj1.Font.Size =  14 

Set iFinds = ActiveSheet.UsedRange.FindNext(iFinds)

Loop While Not iFinds Is Nothing And iFinds.Address <> iFirstAddress
    
End If

End Sub
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37015198
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так:

Код: plaintext
Set EX=CreateObject("Excel.Application")
У вас появляется объект EX, который соответствует объекту Application экселя.
Далее открываете книгу:
Код: plaintext
Set WB=EX.Workbooks.Open("FileName")
У вас есть объект WB со ссылкой на эту книгу.

Ну а дальше ваш макрос, ссылки на объекты в нем должны отталкиваться от EX или WB/
Вместо ActiveSheet лучше использовать ссылку на конкретный лист:
Код: plaintext
WB.Worksheets("Лист1")
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37016539
yura31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro спасибо за ответ, но не дождавшись ответа навалял другой скрипт.
Суть задачи найти значение в ячейки, если "есть" то выдать сообщение если "нет" то выход с цыкла. У меня скрипт далает эту задачу, но помогите передалать его так что бы вместо for использовать " for each " ...или как по другому пройти только один раз по цыклу.
Большое спасибо
вот сам код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option explicit
const xlsFileName = "D:\script\vbs\Nastenko\1.xls"
dim fso, b, s, i, WSHShell, objXL, result
'on error resume next

set fso = createobject("Scripting.FileSystemObject")
Set objXL = WScript.CreateObject("Excel.Application")
set WSHShell = WScript.CreateObject("WScript.Shell")
set b = objXL.workbooks.open(xlsFileName) 'открываем книгу
set s = (b.sheets( 1 )) 'номер листа в книге
for i =  1  to  50  
	'if s.Cells(i,1).Interior.ColorIndex = 3 then        ' определять по цвету
	if s.Cells(i, 1 ).value  = "tru" then                       ' опредилять по тексту
	result = MsgBox ("Открыть файл ?", vbExclamation + vbYesNo, "Бла-Бла")
		if result = vbYes then 
		objXL.Visible = True
			objXL.Workbooks.Open xlsFileName
			else  
			b.close true
			objXL.quit			
			
		end if
	end if
next
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37016563
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura31вместо for использовать " for each " ...или как по другому пройти только один раз по цыклу.
А что, разве For проходит несколько раз?
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37016657
yura31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще раз спасибо за ответ
Код: plaintext
for i =  1  to  50  
походу да, если пробую зайти в файл пишет что он занят и доступный только для чтения
если текст присутствует и найден то все ОК
Код: plaintext
if s.Cells(i, 1 ).value  = "tru"

я так понимаю его дердит работа "цыкла"
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37016711
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura31,

неправильно
вы просто забываете закрыть эксель, если цикл закончился, а текст не найден
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37017125
yura31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы правы... Большое спасибо!
но не могу разобраться с синтаксисом....

Код: plaintext
1.
b.close true
objXL.quit

Как правильно привязать к первому условию?
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37017129
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura31Вы правы... Большое спасибо!
но не могу разобраться с синтаксисом....

Код: plaintext
1.
b.close true
objXL.quit

Как правильно привязать к первому условию?
я не понимаю вопроса, но эти две строки должны быть последними в процедуре, а они у вас где-то в середине.

досрочное окончание цикла, если вы не в курсе - Exit For
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37017132
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще не очень врубаюсь в смысл того, что вы там делаете.
Зачем, к примеру, вы дважды открываете xlsFileName?
Зачем вы продолжаете цикл после закрытия файла?
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37017155
yura31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что значить на путь истинный наставить :)
Все получилось!!!!

Большое-большое Вам спасибо за помощь, Shocker.Pro !!!
...
Рейтинг: 0 / 0
поиск ячейки в excel
    #37017156
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / поиск ячейки в excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]