IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Обсуждение программ (http://www.imho.ws/forumdisplay.php?f=3)
-   -   Microsoft Excel: Вопросы и ответы (http://www.imho.ws/showthread.php?t=26600)

Jeff 09.04.2008 14:52

Вложений: 2
У меня новый вопрос.
Я на всяк случай скриншоты приложил, но вроде и так всё ясно.

Сделал заливку ячеек. Скопировал или вручную вписал что-то в залитые ячейки. Фон опять стал белым. Как сделать так, чтобы фон был отдельно и не менялся в случае изменения инфо в ячейке?

V0land 09.04.2008 14:55

Jeff,
ты когда копируешь\вставляешь копи-пастом, то заодно вставляешь и стиль =) чтоб этого не было, right click - paste special
ну и там выбираешь, скажем, values

earcher 11.04.2008 02:01

Вложений: 1
Очень нужен вот такой сценарий

Первый лист книги:
1111111111 nick.ru
22222222 nick2.ru
333333333 nick3.ru
444444 nick4.ru
5555555555 nick5.ru

второй лист книги:
22222222
444444
5555555555

Требуемый результат (третий лист):
22222222 nick2.ru
444444 nick4.ru
5555555555 nick5.ru

Заранее огромное спасибо!

ps ячейки вида "5555555555" - уникальны, внутри листа не повторяются
pp.s пример прикрепил

V0land 11.04.2008 02:05

earcher,
если честно, то я даже не понял что ты хочешь...

earcher 11.04.2008 05:47

Первый лист книги:
1111111111 nick.ru
22222222 nick2.ru
333333333 nick3.ru
444444 nick4.ru
5555555555 nick5.ru

второй лист книги:
22222222
444444
5555555555

Требуемый результат (третий лист):
22222222 nick2.ru
444444 nick4.ru
5555555555 nick5.ru


Скрипт берет первую строчку из второго листа "22222222".
Находит такую же ячейку в первом столбце первого листа и сохраняет всю строку "1111111111 nick.ru"
Показывает в Результате эту строку (третий лист)

и так далее.

p.s. на первый взгляд очень просто выполнить эту операцию вручную, но когда в базе 10000 строк...

Alex Dark 11.04.2008 07:21

Вложений: 1
Цитата:

Сообщение от earcher (Сообщение 1542894)
Скрипт берет первую строчку
...
на первый взгляд очень просто выполнить эту операцию вручную, но когда в базе 10000 строк...

А зачем тебе скрипт, если есть формула?


Цитата:

Сообщение от earcher (Сообщение 1542874)
ps ячейки вида "5555555555" - уникальны, внутри листа не повторяются

опять же внутри какого листа?

bebus 16.04.2008 06:02

а подскажите, пожалуйста, чем можно открыть запароленный файлик Excel?
оч надо! сотрудница ушла из организации , а важный файлик с паролем...:mad:
как достать оттеда данные????

Dede 16.04.2008 08:00

bebus, попробуйте воспользоваться специальными программами для подбора паролей



результат зависит от степени сложности пароля - набора символов и их количества.

TURNSKIN 16.04.2008 10:00

на сколько я помню, то в экселе пароль "угадываеться" в 2 счета такими програмами. ты уже не востановишь тот пароль который поставила твоя сотрудница, но существует не мало(точнее очень много) паролей которые подойдут к этому файлу.
я согласен, что это звучит странно со точки зрения безопасности, но с другой стороны в экселе под паролем никто не хранит очень важную информацию :cool:

korotetsky 16.04.2008 15:29

один лист в книге ведет себя как будто зажат скрол-лок. вернее даже более по-дурацки - скрол колесом не работает, прыгая по ячейкам клавой курсор уезжает вниз/вправо, содержимое экрана на месте.

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

интересно отчего такая фигня?

korotetsky 16.04.2008 17:07

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

добавлено через 5 минут
проблема решилась

снял закрепление областей, снова закрепил. скрол и прочие прелести заработали. бред какой-то :mad:

Alex Dark 17.04.2008 06:39

Цитата:

Сообщение от korotetsky (Сообщение 1544893)
снял закрепление областей, ...... бред какой-то

Не бред, а разрешение экрана :biggrin:
У меня подобное возникает когда таблица нарисованная шефом на его 21дюймовом отдается экономистке, у которой 17.
Сначала делаю масштаб, потом скидываю закрепление. Или наоборот.

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

bebus 17.04.2008 07:49

Dede, спасибо за совет
пробую подобрать пароль
по результатам посмотрим че сказать :)

korotetsky 17.04.2008 13:28

Цитата:

Сообщение от Alex Dark (Сообщение 1545082)
Не бред, а разрешение экрана

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

Alex Dark 17.04.2008 14:28

korotetsky, Да ты прав. Немного не правильно выразился. У тебя наверное масштаб изменился или ширина/высота колонок/строчек.
У меня как раз и получалось, изначально на большом разрешении с крупным масштабом (150-200%) . При передаче на меньшее разрешение при таком масштабе (даже если она уменьшала его до 100) получалась "дискотека на экране"

korotetsky 25.04.2008 11:42

есть задача:

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

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

если есть варианты, велкам :)

пс: задолбало уже ковыряться в календариках

korotetsky 25.04.2008 15:07

дополняем предыдущий пост :)

имеется 2 ячейки:
<начало расчетного периода> и <конец расчетного периода>
расчетным является месяц, однако правила таковы, что необходимо захватить несколько дней предыдущего месяца и не брать в расчет день/несколько дней расчетного месяца в соответствии с условиями:

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

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

необходимо рассчитать и втулить в ячейки эти даты чтобы можно было определить собственно сам расчетый период: с __.__.____ по __.__.____, подсчитать количество дней и т.д.

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

Li2n 25.04.2008 16:09

[B]Помогите с макросом![/B]
 
Очень нужен макрос работающий как сумесли:
Программа создает таблицу excel у которой однотипный шаблон, но разная информация, поэтому приходится постоянно вставлять функцию сумесли.
Задача следующая:
В первом столбце код(формат-текст), во втором кол-во.
Нужно чтобы макрос проверял первый столбец на наличие повторений и если совпало то суммировал бы второй столбец по совпавшим строкам и сумму записывал в 3 столбец. Кол-во повторений может быть и до 2000, кол-во строк 2000(цикл проверки).
Заранее благодарю.

korotetsky 25.04.2008 16:43

Li2n,
без макросов.в обменнике суммпроизв.zip
не подойет?

Li2n 26.04.2008 19:53

Цитата:

Сообщение от korotetsky (Сообщение 1548079)
Li2n,
без макросов.в обменнике суммпроизв.zip
не подойет?

суммпроизв.zip -Это ссылка на архив(не работает)?

Если я правильно понял, то не подайдет.
Проблема в том, что из программы SAP я выкачиваю таблицу excel, в которой нет формул, а одни значения приходится постоянно для вновь созданной таблицы писать функции Сумесли или ВПР...
Хотелось бы рабочий макрос это быстрее и эффективнее, я б его под свою таблицу переделал и постоянно бы запускал...

Alex Dark 27.04.2008 01:42

korotetsky, не совсем понял. У тебя задача сделать это формулой или макрос тоже подойдет?

добавлено через 28 минут
Цитата:

Сообщение от Li2n (Сообщение 1548060)
Нужно чтобы макрос проверял первый столбец на наличие повторений и если совпало то суммировал бы второй столбец по совпавшим строкам и сумму записывал в 3 столбец.

а в какую строку, если например 5 повторений.

Другими словами.
1 действие: сортируем данные по первой колонке
2 действие: сумируем однотипные данные


Цитата:

Сообщение от Li2n (Сообщение 1548406)
приходится постоянно для вновь созданной таблицы писать функции Сумесли или ВПР...
Хотелось бы рабочий макрос это быстрее и эффективнее

Да вобщем то макрос простой
Код:

стр = 2
Do While Not IsEmpty(Cells(стр, 1))
Cells(стр, 3).Select
ActiveCell.Formula = "=B" + CStr(стр) + "+7"  'здесь твоя формула
стр = стр + 1
Loop

можно воспользоваться FormulaR1C1

добавлено через 49 минут
Li2n, если я тебя правильно понял то:
Код:

Sub Макрос1()
стр = 2
Do While Not IsEmpty(Cells(стр, 1))
  стр2 = стр + 1
  Стр3 = 0
  If IsEmpty(Cells(стр, 3)) Then
    F = "=RC[-1]"
    Do While Not IsEmpty(Cells(стр2, 1))
      If Cells(стр, 1).Value = Cells(стр2, 1).Value Then
        Стр3 = Стр3 + 1
        Sheets(2).Cells(Стр3, 1).Formula = "=" + CStr(стр2)
        Sheets(2).Cells(Стр3 + 1, 1).Formula = ""
        F = F + "+R[" + CStr(стр2 - стр) + "]C[-1]"
      End If
      стр2 = стр2 + 1
    Loop

    Cells(стр, 3).FormulaR1C1 = F
    стр2 = 1
    Do While Not IsEmpty(Sheets(2).Cells(стр2, 1))
      Cells(Sheets(2).Cells(стр2, 1).Value, 3).Formula = Cells(стр, 3).Formula
      стр2 = стр2 + 1
    Loop

  End If
  стр = стр + 1
Loop
End Sub

делает следующее
на текущем листе смотрит колонку 1 на совпадение и в колонку 3 вставляет формулу которая складывает колонку 2 для совпавших
Условие: Sheets(2) используется для хранения найденных данных

Dede 27.04.2008 12:42

Есть задумка написать макрос, но реализация хромает.. Суть дела в чем:
В ячейке записан текст, выделяю произвольный символ этого текста и задаю ему смену шрифта на "symbol".
Хотелось бы вывести на кнопку. То есть выделил символ, нажал и готово.
Просьба помочь :beer:

Alex Dark 28.04.2008 07:37

Цитата:

Сообщение от Dede (Сообщение 1548513)
В ячейке записан текст, выделяю произвольный символ этого текста и задаю ему смену шрифта на "symbol".
Хотелось бы вывести на кнопку.

У меня это не получилось. Кнопка отключается. Макросы не доступны.

Dede 28.04.2008 09:34

Alex Dark, а без кнопки? Запускать можно по горячим клавишам

Alex Dark 28.04.2008 21:20

Dede
Цитата:

Сообщение от Alex Dark (Сообщение 1548736)
Макросы не доступны.

можно форматировать фиксированные слова или с символа 5 до символа 10
Можно попробовать прописать логику. Но как это хочешь ты :idontnow: похоже что не возможно

korotetsky 29.04.2008 17:56

Цитата:

Сообщение от Alex Dark (Сообщение 1548406)
не совсем понял. У тебя задача сделать это формулой или макрос тоже подойдет?

желательно формулой. результат в ячейку. если сумеет макрос - пес с ним. пускай будет макрос

Li2n,
это имя файла в обменнике
Цитата:

суммпроизв.zip 7 3.74 Kb 25.04.2008 03:42

Jeff 15.05.2008 10:56

англоязычный эксель.

Как сделать, чтобы в ячейке можно было писать и формулу и текст?

Например |машина 10| где 10 это результат какой-то формулы.

V0land 15.05.2008 11:50

Вложений: 1
;)

Jeff 15.05.2008 12:27

V0land,
Сенкс, но теперь новая проблема. Допустим получается по формуле длинное дробное число. Мне никак не отформатировать эту ячейку, чтобы было допустим два знака после запятой. Она тупо никак не форматируется, если текст и формула вместе.
То есть из |равно 10,9218463| надо сделать |равно 10,92| , а округлять оно не хочет

Alex Dark 15.05.2008 12:42

Jeff, Round(число,КоличествоЗнаков)
Быстрее все так
PS
=Round(A3+A2;4)&" wwwww" -> 0,7778 wwwww
=Round(A3+A2;2)&" wwwww" -> 0,78 wwwww

V0land 15.05.2008 12:46

Alex Dark,
о! а я-то уже в VBA полез ))))

korotetsky 15.05.2008 13:02

V0land, та да ;)


Alex Dark, стянул я приблуду твоего изготовления, руки дойти до нее никак не могут. видать конец месяца нам поможет :biggrin:

в любом случае, спасибо

вдогонку еще вопрос: никто не задумывался как научить мышь скролить в выпадающих списках?

kasha 15.05.2008 15:48

подскажите пожалуйсто.

есть ячейка формата text. в ней запись следующего вида.

There are a lot of free space.a1

мне бы как-нибудь считать в другую клетку последние 2 символа т.б. "a1".

сам в интернете нашел такой макрос:

Private Sub Worksheet_Activate()
a = Лист1.Cells(1, 1)
i = Len(a)
lastsymbol = Mid(a, i, 1)
Лист1.Cells(2, 1) = lastsymbol
End Sub

но с макросами вообще не знаком. и Если вы считаете что он мне подходит, то разьясните пожалуйста хотя бы, что значат строки все, кроме i = Len(a) - это я так понимаю в переменную заносится длина строки(кол=во символов в ячейке) .
спасибо

Jeff 15.05.2008 15:57

kasha,
=right(X;Y)
Х - адрес ячейки
Y - кол-во символов справа

Alex Dark 16.05.2008 12:09

Цитата:

Сообщение от korotetsky (Сообщение 1554423)
никто не задумывался как научить мышь скролить в выпадающих списках

Это к разработчикам ПО

kasha
Объявление процедуры обработки
В данном случае это стандартная процедура вызываемая автоматом при активизации листа
Private Sub Worksheet_Activate()

переменной А присваиваем значение ячейки 1 по горизонтали и 1 по вертикали из листа1
a = Лист1.Cells(1, 1)

Присваиваем I значение равное количеству символов в переменной А
i = Len(a)

Присваиваем lastsymbol значение равное значению последнего символа из переменной А
lastsymbol = Mid(a, i, 1)

Устанавливаем в ячейке листа1 в первой строке во второй колонке значение lastsymbol
Лист1.Cells(2, 1) = lastsymbol

Конец процедуры
End Sub

Цитата:

Сообщение от kasha (Сообщение 1554503)
Если вы считаете что он мне подходит

проще написать как предложил Jeff
и не заморачиваться с макросами.

Макросы используются (мое мнение) только когда сложно или невозможно решить задачу стандартными средствами

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

earcher 16.05.2008 16:21

Здраствуйте.
Нужны два скрипта:

1. База такого вида: "логин:пароль@хост"
То есть например: alc11:hry7K5lc@alc11.ru
Нужно чтоб скрипт нашол те строки в которых "логин" содержится в "хосте"
То есть:
alc11:hry7K5lc@alc11.ru - подходит!
alc_22:hry7K5lc@alc22.ru - не подходит
w_alc33:hry7K5lc@alc33.ru - не подходит
alc44:hry7K5lc@alc-44.ru - не подходит
alc55:hry7K5lc@aaaaaaaaaaaaaalc55.ru - подходит!
alc66:hry7K@5lc@alc66.ru - подходит!

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

2.
Первый лист:
alc11:hry7K5lc@alc11.ru
alc_22:hry7K5lc@alc22.ru
w_alc33:hry7K5lc@alc33.ru
alc44:hry7K5lc@alc-44.ru
alc55:hry7K5lc@aaaaaaaaaaaaaalc55.ru
alc66:hry7K@5lc@alc66.ru

Второй лист:
alc11:hry7K5lc@alc11.ru
alc66:hry7K@5lc@alc66.ru

Третий лист (Результат):
alc_22:hry7K5lc@alc22.ru
w_alc33:hry7K5lc@alc33.ru
alc44:hry7K5lc@alc-44.ru
alc55:hry7K5lc@aaaaaaaaaaaaaalc55.ru

То есть скрипт берет строки с первого листа, отнимает от него строки второго листа, и показывает в третьем


Огромное спасибо!!!

Alex Dark 19.05.2008 06:01

Цитата:

Сообщение от earcher (Сообщение 1555036)
Не знаю как проще реализовать, но нужно чтоб подходящие показались в одном месте а не подходящие в другом, может на разлых листах...

не городи огород. Добавь колонку в которой по условию выставляются 1/0 и используй фильтр

условие простое
если текст после собаки равен тексту с начала до двоеточия

Alex Dark 19.05.2008 10:12

В колонке А исходные данные
Код:

=ЕСЛИ(ЛЕВСИМВ(A9;НАЙТИ(":";A9;1)-1)=ПСТР(A9;НАЙТИ("@";A9;1)+1;ДЛСТР(ЛЕВСИМВ(A9;НАЙТИ(":";A9;1)-1)));1;0)

Проверка левой части
=ЛЕВСИМВ(A9;НАЙТИ(":";A9;1)-1)

Проверка после @
=ПСТР(A9;НАЙТИ("@";A9;1)+1;ДЛСТР(ЛЕВСИМВ(A9;НАЙТИ(":";A9;1)-1)))


Результат
alc11:hry7K5lc@alc11.ru 1 alc11 alc11
alc_22:hry7K5lc@alc22.ru 0 alc_22 alc22.
w_alc33:hry7K5lc@alc33.ru 0 w_alc33 alc33.r
alc44:hry7K5lc@alc-44.ru 0 alc44 alc-4
alc55:hry7K5lc@aaaaaaaaaaaaaalc55.ru 0 alc55 aaaaa
alc66:hry7K@5lc@alc66.ru 0 alc66 5lc@a
alc66:hry7K@ALC66_.ru 1 alc66 ALC66
alc66:hry7K@ALC66.ru 1 alc66 ALC66
Обрати внимание на последние 2 строки

добавлено через 22 минуты
Цитата:

Сообщение от earcher (Сообщение 1555036)
То есть скрипт берет строки с первого листа, отнимает от него строки второго листа, и показывает в третьем

опять же зачем городить огород скриптами

=ПОИСКПОЗ(A1;Лист2!A$1:A$20;0)
результат:
alc11:hry7K5lc@alc11.ru 1
alc_22:hry7K5lc@alc22.ru #Н/Д
w_alc33:hry7K5lc@alc33.ru #Н/Д
alc44:hry7K5lc@alc-44.ru #Н/Д
alc55:hry7K5lc@aaaaaaaaaaaaaalc55.ru #Н/Д
alc66:hry7K@5lc@alc66.ru 2

выдает позицию на втором листе.
добавляй условие =если(ПОИСКПОЗ(A1;Лист2!A$1:A$20;0)>0;1;0)

включай фильтр и пользуй

earcher 20.05.2008 01:28

Цитата:

Сообщение от Alex Dark (Сообщение 1555744)
В колонке А исходные данные

Ок.
Сработало на всех кроме:
nilonis:98fduiudhdfh@www.nilonis.com.ua 0 nilonis www.nil
alc66:hry7K@5lc@alc66.ru 0 alc66 5lc@a
file4e:swdj34535@ftp.file4e.net 0 file4e ftp.fi
такого типа...


Со вторым вариантом не понял. Куда исходные значения ставить, куда формулы...

p.s. кстати, когда поставлял =ПОИСКПОЗ(A1;Лист2!A$1:A$20;0) на третьем листе, появилось сообщение экселя о запрете какойто циклической ссылки...

Alex Dark 20.05.2008 08:08

Цитата:

Сообщение от earcher (Сообщение 1555036)
Нужно чтоб скрипт нашол те строки в которых "логин" содержится в "хосте"

Я посчитал что ты опечатался со словом содержиться
т.е. пример:
alc1:hry7K5lc@alc1.ru - подходит
alc1:hry7K5lc@Kalc11.ru - Тоже подходит?
alc:hry7K5lc@Kalculator.ru - Тоже подходит?

поэтому проверка идет на совпадение логина с началом хоста. Вообще то это то же не совсем верно.


Часовой пояс GMT +4, время: 14:13.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.