Последние темы Поиск
Общие форумы
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Форумы поддержки портала iXBT.com
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
crashmx: MS Excel. Выбор значения в строке, если в ней есть определенное содержание
crashmx
Member
Автор темы
6/28 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 19 января 2007 00:29
Есть формула на ячейке Е3: "Если В3="один" ИСТИНА, то берем значение из С3, если ЛОЖЬ, то 0". И так на остальных ячейках тоже.
Как сделать, чтобы эта формула работала, если в этой стоке кроме "один" написано еще что-то, например "один ХХХ"? Строк таких около 500 и каждый день данные в них разные. Нужно выцеплять именно строки с заданными критериями, тот же самый "один", который может быть в 50 вариациях: "один ХХХ", "один РРР", "один ККК" и т.д. Чтобы не создавать формулы на 50 вариаций "один"
Пример приложил.

PS: Желательно не на макросах.
К сообщению приложены файлы:
V3
Member
835/1210 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 19 января 2007 04:29
crashmx
вводим формулу в Е3
=ЕСЛИ(ЕОШ(НАЙТИ($E$2;B3));0;C3)
или если не хочешь чтобы поиск шел по названию столбца то =ЕСЛИ(ЕОШ(НАЙТИ("один";B3));0;C3)
растягиваем по столбцу
аналогично формула для F3
=ЕСЛИ(ЕОШ(НАЙТИ($F$2;B3));0;C3)
G3
=ЕСЛИ(ЕОШ(НАЙТИ($G$2;B3));0;C3)
H3
=ЕСЛИ(ЕОШ(НАЙТИ($H$2;B3));0;C3)
можешь также в них значение конкретной ячейки $..$.. заменить на то слово которое ищешь (два, три, четыре)
далее растягиваем по столбцу
crashmx
Member
Автор темы
7/29 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 19 января 2007 10:14
спасибо
получилось

Добавление от 19.01.2007 18:36:

Еще пару вопросов возникло

1. Как сделать, чтобы в ячейке "В" при определенных условиях (например при слове "ведомость" с "С5" по "С7") счет остановливался и скидывал посчитанные данные на отдельный лист в табличку с заголовком "Ведомость №1".
2. Есть такая программа Рарус. Так вот данные тупо копируются из нее и вставляются в этот файл который уже и подсчитывает сколько там чего по какой ведомости. Но Рарус криво копирует русские наименования. При вставке какие-то иероглифы. Как это победить?
3. Как создать кнопку, чтобы очистить данные с "В4" по "Е12"? Чтобы тупо нажать на нее и поле очистилось.

Исправлено: crashmx, 19.01.2007 21:37

К сообщению приложены файлы:
V3
Member
836/1212 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 21 января 2007 18:10
crashmx
1. при слове "ведомость" с "С5" по "С7" счет остановливался
что значит счет останавливался?
скидывал посчитанные данные на отдельный лист
как посчитанные данные? если мы счет остановили
я так понимаю это надо смотреть из рисунка. Т.е. находим надпись ведомость 1 скидываем один два три четыре в таблицу, находим ведомость 2 те же операции
Нужно разъяснение по этому вопросу. Пока все идет к тому что надо будет писать макрос.

2. Есть такая программа Рарус наверно есть не сталкивался
попробуй перед копированием из этой программы переключить шрифт на русский, а потом запомнить данные для вставки. Может быть поможет.

3. Через конструктор вставляем кнопку на лист (или пишем макрос и вытаскиваем на панель инструментов кнопку под макрос)
вставляем код
Private Sub CommandButton1_Click()
Range("B4:E12").Clear
End Sub
crashmx
Member
Автор темы
8/30 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 22 января 2007 02:03
написал в скрине

если нетрудно объясни вкратце: что такое конструктор?
К сообщению приложены файлы:
V3
Member
838/1214 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 22 января 2007 14:27
crashmx
что такое конструктор?
Вид-Панели инструментов-Visual Basic включили панель на ней выбираем кнопку "элементы управления" (гаечный ключ перекрещенный с молотком)
в открывшейся панели жмем на элемент "кнопка" затем на лист Excel чтобы вставить ее в нужное место, после двойной щелчок по созданной кнопке вставляем приведенный код в открывшееся окно, закрываем ВБА, закрываем панели.
Все
Щелкая по кнопке будем очищать заданный диапозон ячеек.
На панели задач можешь разместить кнопку самостоятельно?

С ведомостью посмотрю

Добавление от 22.01.2007 18:12:

Вот на скорую руку, попробуй если понравиться то доработаем
Работает до 11 ведомостей, они должны идти непрерывно в столбце В
Sub crashmx()
Dim v(10) As String
Dim n(3, 1) As Variant
'
For t = 1 To 11
v(t - 1) = "Ведомость №" & LTrim(Str(t))
Next

n(0, 0) = "один"
n(1, 0) = "два"
n(2, 0) = "три"
n(3, 0) = "четыре"

j = 1: i = 4
While Cells(i, 2).Value > ""
For t = 0 To 3
If InStr(1, Cells(i, 2).Value, n(t, 0)) > 0 Then n(t, 1) = n(t, 1) + Cells(i, 3).Value
Next
If Cells(i + 1, 2).Value = v(j) Or Cells(i + 1, 2).Value = "" Then
k = j * 3 - 4
Cells(2, 7 + k).Value = v(j - 1)
For t = 0 To 3
Cells(3 + t, 7 + k).Value = n(t, 0)
Cells(3 + t, 8 + k).Value = n(t, 1)
n(t, 1) = 0
Next
j = j + 1
If j > 10 Then Exit Sub
End If
i = i + 1
Wend
End Sub

По ходу сразу несколько вопросов:
1. Исходный данные всегда распологаются В начиная с 3 строки?
2. Все ведомости идут по порядку (т.е. Ведомость 1, затем 2, 3 и т.д. нет такой ситуации как 1, 5, 3, 6) ?
4. Количество Ведомостей постоянно? (если да то сколько их)
crashmx
Member
Автор темы
9/31 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 22 января 2007 23:15
с кнопкой справился - спасибо Удаляет... только всё, границы тоже и блокирует это поле для ввода другой инфы (если стояла защита на лист кроме этого поля)


Исходный данные всегда распологаются В начиная с 3 строки? да

Все ведомости идут по порядку (т.е. Ведомость 1, затем 2, 3 и т.д. нет такой ситуации как 1, 5, 3, 6) ? нет, не по порядку - может начаться с 23, а закончиться 7 например.

Количество Ведомостей постоянно? (если да то сколько их) нет, всегда разные. И номера и названия. Причем не факт, что если сегодня была ведомость №32, то завтра она опять появится. Она может вообще больше не вылезть никогда.

Добавление от 23.01.2007 00:26:

если насчет кнопки я врубился, то куда и как примостить твой макрос - не догоню
Блин, придется их все-таки изучать...
V3
Member
842/1218 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 23 января 2007 03:34
crashmx
хорошо подкорректирую с учетом новых данных

куда и как примостить твой макрос - не догоню
жмем Alt+F11 открывается VBA
в правое верхнее окно то, что Project-VBAProject жмем правой кнопкой мыши, выбираем Insert - Module
в появившееся большое окно вставляем код. Закрываем ВБА в Excel сервис-макрос-макросы выбираем макрос и жмем выполнить
приведенный код работает только под пример (ведомости идут непрерывно и попорядку)

Добавление от 23.01.2007 19:32:

crashmx
что бы не стирались границы исправь код
Private Sub CommandButton1_Click()
Range("B4:E12").ClearContents
End Sub


и слудующий код по ведомостям идущим не попорядку (попробуй напиши что не то)
Sub crashmx()
Dim n(3, 1) As Variant
v = "Âåäîìîñòü ¹"
n(0, 0) = "îäèí"
n(1, 0) = "äâà"
n(2, 0) = "òðè"
n(3, 0) = "÷åòûðå"
j = 1: i = 4: nv = 2
While Cells(i, 2).Value > ""
For t = 0 To 3
If InStr(1, Cells(i, 2).Value, n(t, 0)) > 0 Then n(t, 1) = n(t, 1) + Cells(i, 3).Value
Next
If InStr(Cells(i + 1, 2).Value, v) > 0 Or Cells(i + 1, 2).Value = "" Then
k = j * 3 - 4
Cells(2, 7 + k).Value = Cells(nv + 1, 2).Value
nv = i
For t = 0 To 3
Cells(3 + t, 7 + k).Value = n(t, 0)
Cells(3 + t, 8 + k).Value = n(t, 1)
n(t, 1) = 0
Next
j = j + 1
End If
i = i + 1
Wend
End Sub
crashmx
Member
Автор темы
10/32 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 24 января 2007 01:04
V3
что бы не стирались границы исправь код

Private Sub CommandButton1_Click()Range("B4:E12").ClearContentsEnd Sub


а как бы еще и цветную заливку удалять?



v = "Âåäîìîñòü ¹"n(0, 0) = "îäèí"n(1, 0) = "äâà"n(2, 0) = "òðè"n(3, 0) = "÷åòûðå"

эээ... вот из Раруса руские слова такими же символами копируются

А просто формулами без макросов никак не обойтись, да?

Просто я в формулах болемене шарю, а в макросах ваще тупонос Откуда какие команды делать и как... Чем то школьный бейсик напоминает

Могу кстати саму таблицу тебе скинуть - посмотришь что у меня получилось
V3
Member
844/1221 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 24 января 2007 04:19
crashmx
по поводу букв, надо перед копированием было переключить раскладку на русскую (пройдет ли это дело с Раруса не знаю)
должно быть
v = "Ведомость №"
n(0, 0) = "один"
n(1, 0) = "два"
n(2, 0) = "три"
n(3, 0) = "четыре"

а как бы еще и цветную заливку удалять
добавь строчку
Range("B4:E12").Interior.ColorIndex = xlNone

Могу кстати саму таблицу тебе скинуть - посмотришь что у меня получилось
вариант конечно не желательный, слишком дорогой трафик по ГПРС. Но если не очень большой объем и сожмешь rar то vx3@inbox.ru

А просто формулами без макросов никак не обойтись, да?
можно конечно попробовать с помощью формул массива, но макрос намного проще. Т.к. формула приобретет ужасающий вид (если ее удастся сваять ) (особенно учитывая тот момент что тебе неизвестно число данных и ведомости идут не попорядку)
crashmx
Member
Автор темы
11/33 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 24 января 2007 10:01
отправил
31 кб
V3
Member
845/1222 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 24 января 2007 16:07
crashmx
чтобы написать имя без сотрудник
можно воспользоваться формулой =ПРАВСИМВ(B4;ДЛСТР(B4)-ПОИСК(" ";B4)) здесь "удаляется" первое слово, поэтому не важно что будет первым словом Сотрудник, или Фамилия продавца.
можно применить такую =ПОДСТАВИТЬ(B4;"Сотрудник";"") здесь просто будет удаляться слово Сотрудник

Мдааа присланный файл значительно отличается от того что тут выкладывалось в картинках
Поэтому как я понял "ведомость" это сотрудник
один, два, три это 0,1, 2, 3, и т.д.
исходя из этого следующий код
Sub crashmx()
Dim n(9, 1) As Variant
v = "Сотрудник"
For t = 0 To 9
n(t, 0) = LTrim(Str(t))
n(t, 1) = 0
Next
j = 1: i = 4: nv = 5
While Cells(i, 2).Value > ""
For t = 0 To 9
If InStr(1, Cells(i, 3).Value, n(t, 0)) > 0 Then n(t, 1) = n(t, 1) + Cells(i, 5).Value
Next
If InStr(Cells(i + 1, 2).Value, v) > 0 Or Cells(i + 1, 2).Value = "" Then
k = j * 6 - 6
'Cells(2, 7 + k).Value = Cells(nv + 1, 2).Value
nv = i
For t = 0 To 9
Cells(5 + t, 70 + k).Value = n(t, 0)
Cells(5 + t, 72 + k).Value = n(t, 1)
n(t, 1) = 0
Next
j = j + 1
End If
i = i + 1
Wend
End Sub

Не понял в этом ракурсе твоего вопроса как "вырезать" имя сотрудника потому как его надо также вставлять программным способом (ты же не знаешь в какой ячейки будет надпись "сотрудник Миша")
Файл отправил смотри
В качестве совета, почему бы на месте не обратиться к какомунибудь программисту чтобы он быстро и с учетом пожеланий ОПЕРАТИВНО (т.к. может общаться вживую и учесть все требования) сваял программу, думаю это не будет дорого стоить
crashmx
Member
Автор темы
12/34 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 26 января 2007 18:55
спасибо

Где можно почитать и изучить про макросы (какие формулы за что отвечают, как создавать и т.п.)?
У меня в Офисном Хелпе только на англицком все это дело, в инете не нашел.

ЗЫ: каким опреатором связи всетаки пользуешься?
V3
Member
853/1233 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 26 января 2007 19:03
crashmx
У меня в Офисном Хелпе только на англицком все это дело
Оно у всех на английском , приходиться разбираться

в инете не нашел.
ай ай ай
http://www.firststeps.ru/

Региональный оператор
crashmx
Member
Автор темы
13/35 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 26 января 2007 20:02
Пасибо!
Последний вопрос
Как сделать, чтобы при поиске числа (1548 например) формула искала только это число, игнорируя другие числа содержащие это число (222215489999 например)?

К билайну имеет отношение?
V3
Member
855/1235 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 26 января 2007 21:50
crashmx
=ЕСЛИ(A1=1548;"yes";"no")

Нет не Билайн хотя их симка тоже имеется. У меня региональный оператор Мотив
crashmx
Member
Автор темы
14/36 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 27 января 2007 14:01
а если так?
К сообщению приложены файлы:
V3
Member
857/1238 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 27 января 2007 18:09
crashmx
не правильная формула, в этом варианте она ищет вхождение цифр, а не "чистое" число.
Вводи
=ЕСЛИ(A2=$C$1;B2;0)
и далее тяни по столбцу
crashmx
Member
Автор темы
15/37 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 27 января 2007 20:00
V3
=ЕСЛИ(A2=$C$1;B2;0)

эта формула работает только в том случае если в столбец А значения вбиваются вручную. Если их скопировать из другого файла и вставить, от она не считает.
Формула =ЕСЛИ(ЕОШ(НАЙТИ($C$1;A2));0;B2) ишет вхождение цифр (а надо чистое число) не только во введенных данных. но и в скопированных
Непонятен факт почему первая формула не считает скопированные данные?


вот нашел решение:
=СУММЕСЛИ(A2;$C$1;B2)

Добавление от 27.01.2007 20:40:

блин еще прикол (см.вложение) - если поставить защиту на лист (кроме этого очищаемого диапазона), выскакивает ошибка про заливку. Как ее победить?

Исправлено: crashmx, 27.01.2007 20:42

К сообщению приложены файлы:
V3
Member
859/1240 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 27 января 2007 22:03
crashmx
Когда выбираешь защитить лист поставь галку на "форматирование ячеек"

скопировать из другого файла и вставить, от она не считает
странно у меня такой проблемы нет
у тебя случаем данные при копировании как текст не вставляются? (в этом случае по умолчанию Excel их выравнивает по левому краю), тогда такая ситуация возможна ЕСЛИ не работает, а СУММЕСЛИ справляется

Огромное спасибо
crashmx
Member
Автор темы
16/38 ответов
19 лет на iXBT, с декабря 2005
Инфо Ответить
c
crashmx Member Автор темы
18 лет назад / 27 января 2007 22:25
а что может быть с ошибкой про заливкой?

ты про билайн? получилось?
V3
Member
860/1241 ответов
19 лет на iXBT, с мая 2005
Чаще пишет в "Прикладное ПО" (64%)
Россия, Новоуральск
Инфо Ответить
V
V3 Member
18 лет назад / 28 января 2007 13:18
crashmx
а что может быть с ошибкой про заливкой?
на защищенном листе нельзя сменить заливку поэтому решений у данной проблемы два
1. Когда выбираешь защитить лист поставь галку на "форматирование ячеек"
2. Снять защиту листа в ВБА, затем отменить заливку и опять установить защиту листа

ok
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).