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)

Nightfall 15.09.2008 20:07

Доброго времени суток. Вопрос в следующем:
при открытии большого числа файлов Excel 2007 (книги по несколько мегабайт с ссылками на внешние файлы) и хотя бы одного файла в старом формате (xls) при сохранении excel может повиснуть более чем на 30 мин. При этом все остальные программы работают без тормозов. Компьютер Core2Duo E6400 с 2 гигами оперативки. Кто-нибудь сталкивался? Как это лечится?

Alex Dark 16.09.2008 09:25

Nightfall, тыж сам пишешь: при открытии большого числа файлов Excel 2007 ... и хотя бы одного файла в старом формате (xls) при сохранении excel может повиснуть более чем на 30 мин.
проблема быстрее всего именно в этом.
Книги большие, при сохранении в старом формате происходит преобразование и тормоза.

PS я не открываю много книг и большого веса сразу. Я не пользую 2007, у меня 2002 но если попадается книжка из "старых запасов" то можно заметить определенные тормоза при работе именно со старым форматом при закрытии/сохранении

Nightfall 16.09.2008 10:23

В том то и дело что файл в старом формате может быть очень маленьким и только с данными (без связей), соответственно преобразование, по идее, не должно так подвешивать excel. Обычно сохраняю файлы без изменения расширения.

korotetsky 16.09.2008 10:40

Nightfall,
Alex Dark имел в виду сохранение в "неродном" для данной версии экселя формате, изменение расширения тут нипричем.

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

Nightfall 16.09.2008 13:12

Может зависнуть при 4-5 файлах по 5-6 Мб (в новом формате) и одном старом (несколько Кб).

Alex Dark 17.09.2008 06:59

Nightfall, а файло у тебя случаем не в сети лежит?
Замечал за Экселем разницу в производительности при работе по сети и локально. Иногда эта разница достаточно существенная.

Цитата:

Сообщение от Nightfall (Сообщение 1589774)
... в старом формате (xls)...

Попробовал в 2007 "поработать" с файлами сохраненными в разных форматах. Вообще то файлы он открыл без проблем, изменения все принял, а вот сохранять отказался. Грит "тока в формате 97-2003" (извини если что, пишу по памяти)
Поэтому возникает интересные вопросы.
1. Какой же все таки у тебя "старый формат".
2. Какие надстройки ты себе поставил.
3. Может попробовать (кстати когда появился 97 офис это только и помогало ликвидировать глюки огромного количества книг и листов формата 95, 4, 3 и еще чего то тама) Открыть. Сохранить как с указанием "нового формата". Закрыть. Естественно предварительно сделай архивную копию.
И еще, если файла много, то проще это сотворить макросом.
Это уж как шуточное предположение, но в каждой шутке есть доля правды
4. Батенька, а у вас случайно не вирь какой-нить обитает

Nightfall 17.09.2008 10:35

Файлы лежат локально.
1. Старый формат xls, новый xlsx.
2. Дополнительных надстроек (по сравнению со стандартными установками) нет.
3. По возможности так и стараюсь делать. Но, т.к. у внешних пользователей в основном стоит старый офис, достаточно часто приходится работать одновременно и в старом и в новом формате.
4. Ну, NOD32 по крайней мере ничего не находит. Такая проблема, насколько я понял покопавшись в интернете, есть не только у меня, это какой-то врожденный косяк 2007. См., например, здесь:
http://forums.microsoft.com/technet-ru/ShowPost.aspx?PostID=2399857&SiteID=40

angelflyfree 08.12.2008 23:39

доброго времени суток.
искала - не нашла... у меня такая проблема, скопировала в файл экселя список, он стал весил 3 Мб. в чем может быть проблема? список не большой, был скопирован с другого экселевского файла.

EvroStandart 09.12.2008 11:26

Может попробовать скопировать в виде только текста.

Alex Dark 17.12.2008 21:04

Цитата:

Сообщение от angelflyfree (Сообщение 1613787)
скопировала в файл экселя список, он стал весил 3 Мб. в чем может быть проблема?

проблеммы две
первая, не понял в чем проблемма
вторая, если я всетаки понял, CTRL+A Формат, строка, отобразить

korotetsky 28.01.2009 22:38

есть вопрос. его трудно сформулировать, однако допек уже нереально. косяк касается именно 2007 экселя, т.к. в 2003-м такой проблемы небыло.

как при задании правил условного форматирования для выделенного диапазона указать этот самый диапазон не абсолютной ссылкой типа $A$8:$AD$8 и ссылкой без знаков $ в указании строки - $A8:$AD8.

обьясню зачем такой изврат - так повелось еще со старых экселей что строка, вернее дата в ней сравнивается с датой указанной в абсолютной ячейке вне таблицы, в шапке например, либо тупо =СЕГОДНЯ(). таким образом когда дата подходит к дате икс, вся строка становится цветом все горячее и горячее, тем самым обращая внимание планктона на то, что дата подходит и пропускать его вредно для здоровья.

с 2003-м проблем небыло, все форматировалось убогенько 3-я условиями, но как надо и копирование форматов распространялось на все строки данной таблицы. идиллия вобщем. что же делает умный 2007-й эксель - как только в условном форматировании жмешь "применить" ибо "ок", эта сволочь перед указанием строки везде ставит $, делая тем самым невозможным скопировать эти гребанные форматы на весь диапазон с привязкой к номеру конкретной строчки. я уже моск себе сломал как его отучить от этой гадости, справка говорит юзай либо относительные, либо абсолютные ссылки. однако на практике эксель ложил на то что написано в справке и везде тулит абсолютные.

научите как быть

Alex Dark 29.01.2009 10:04

Вложений: 1
korotetsky, если чесно, то проблемму понял примерно. 2007 не пользую, но попытка удалась.

Для одной ячейки сделал условие: условное форматирование, Управление правилами, создать правило
а потом инструментом кисть распространил на остальные ячейки.

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

Если я правильно понял твою проблемму, вот файлец.
Делал так как описал выше. Главное правильно расположить последовательность условий

korotetsky 29.01.2009 11:12

Вложений: 1
во-первых, эксель ругается при сохранении на кривизну форматов,
во вторых даже при использовании 2007-й версии мне нужен файл xls, т.к. не у всех есть 7-я версия (пока во всяком случае)

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

Alex Dark 30.01.2009 08:45

Вложений: 1
korotetsky, и так.
1. Выдели весь диапазон и очисть условное форматирование. Эта скатина накладывает условия. Проблемма в этом.
2. Создай правило условного форматирования только для одной ячейки (я экспериментировал на е10).
3. После проверки что все работает, укажи диапазон действия условия А10-G13

Вот и все. До кучи кидаю твой же файл сделаный в 2007 и раскиданным условным форматированием на диапазон А10-G13.

PS. C кисточкой не пробовал, извини, 2007 не на моей машине.

korotetsky 30.01.2009 16:03

Цитата:

Сообщение от Alex Dark (Сообщение 1629567)
korotetsky, и так.
1. Выдели весь диапазон и очисть условное форматирование. Эта скатина накладывает условия. Проблемма в этом.
2. Создай правило условного форматирования только для одной ячейки (я экспериментировал на е10).
3. После проверки что все работает, укажи диапазон действия условия А10-G13

Вот и все. До кучи кидаю твой же файл сделаный в 2007 и раскиданным условным форматированием на диапазон А10-G13.

PS. C кисточкой не пробовал, извини, 2007 не на моей машине.

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

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

grooogler 02.02.2009 01:47

Вложений: 1
Здраствуйте.
Кажется уже мелькал какой то такой скрипт, но чтото пересмотрел, никак не нашол.

Нужно два скрипта на excel

1.
Таблица А
111111111
222@:;zxf222
333333333
4444444
555555555
66666666
777
8888888
9999фф999ff999

Таблица B
222@:;zxf222
4444444
77777777
888

Скрипт должен поместить в таблицу C следующее:

Таблица C
111111111
333333333
555555555
66666666
777
8888888
9999фф999ff999

То есть в таблице B есть ячейки которые равны ячейкам в таблице A, мы их находим и вычитаем из таблицы A и отсавшиеся выводим в таблице C.


2.
Лист 1
А B
1:1@1:@ book.gooodd
2:2@2:@ cooodrrrrrrrr
3:3@3:@ faaaaaafaaaa
4:4@4:@ groonnnnnnn
5:5@5:@ zooorrrrrrrrrr

Лист 2
A
1:1@1:@
2:2@2:@
4:4@4:@

Наш скрипт должен поместить на Лист 3 следующее

Лист 3
A B
1:1@1:@ book.gooodd
2:2@2:@ cooodrrrrrrrr
4:4@4:@ groonnnnnnn

Ну как бы думаю понятно как он должен сделать... берёт ячейку A из Листа 2, находит соответствующую ей ячейку на листе 1 в таблице И и выводит их вместе на Листе 3. В принцыпе можно всё сделать и на один лист...

Заранее безмерно благодарен.

p.s. прикрепляю файлы с примерными шаблонами
pp.s. таких строк в обоих примерах будет достаточно много, чтото около 10000

Alex Dark 02.02.2009 09:58

[offtop]korotetsky, Моё имхо, но нахрена было делать совершенно новый интерфейс? Я нашел две вещи, которые не смог сделать в ворде, это не принципиальные веши, но для избавления от этих приблуд пришлось грузить 2003. Так же и с экселем. Но в случае условного форматирования боюсь что ты не прав. Вернее не совсем понял новых "прелестей жизни". Новые возможности условного форматирования немного расширены, просто это дюже наворочено и очень не привычно[/offtop]

добавлено через 23 минуты
grooogler это тебе поможет в первом и втором случае
Код:

=ЕСЛИ(ЕНД(ПОИСКПОЗ(A1;Лист2!A$1:A$18;0));1;0)
на примере 2.xlsx
на листе 1 в первую строку любой колонки кидаешь и копируещь на нужный диапазон. Далее фильтр ...

PS И обрати внимание на диапазон поиска в формуле :biggrin:
ps2 найди здесь мои сообщения, найдешь и результат

grooogler 21.02.2009 13:01

Понадобился вот такой вот макрос.

Таблица А:
111111:ппппппп@111111:ппппппп@55345.ftp.543534534.ru/53453453.ru/www
вававававава:oojaiH4j@вававававава:oojaiH4j@neels.ru
..........:444444444444@..........:444444444444@444444444444444444.ru
prima:fffffffffffff@prima:fffffffffffff@gral.rudddd

Таблица В (Результат)
111111:ппппппп@55345.ftp.543534534.ru/53453453.ru/www
вававававава:oojaiH4j@neels.ru
..........:444444444444@444444444444444444.ru
prima:fffffffffffff@gral.rudddd


Как именно он должен это сделать.
В наших строках присутствует повторение некоторых вещей через @
"111111:ппппппп@" и "111111:ппппппп@"

"вававававава:oojaiH4j@" и "вававававава:oojaiH4j@"

"..........:444444444444@" и "..........:444444444444@"

"prima:fffffffffffff@" и "prima:fffffffffffff@"

Вот такие дубли и надо убрать во всех строках Таблицы А, и получившееся поместить в Таблицу В. Всё остальное оставляем без изменений. Дубли убираем только вот по тому принцыпу что я написал выше, то есть "*:*@". Если строка не содержит никаких таких дублей - ничего в ней не меняя тоже пишем её в Таблицу В.
Заренее спасибо.

p.s. шаблон здесь http://slil.ru/26937210

Alex Dark 22.02.2009 12:10

1. определяем количество @. Ячейка в колонке H=ЧислоВхождений(A3;"@";"true")
Код:

Function ЧислоВхождений(СтрокаГдеИщем As String, СтрокаЧтоИщем As String, ТочноеСравнение As Boolean) As Integer
    Dim S1, S2, S3
    S1 = IIf(ТочноеСравнение, СтрокаГдеИщем, UCase(СтрокаГдеИщем))
    S2 = IIf(ТочноеСравнение, СтрокаЧтоИщем, UCase(СтрокаЧтоИщем))
    L = Len(S2)
    ЧислоВхождений = 0
    For i = 1 To Len(S1)
        S3 = Left(S1, L)
        If S3 = S2 Then
            ЧислоВхождений = ЧислоВхождений + 1
        End If
        S1 = Mid(S1, 2)    Next
End Function

2. определяем позицию первой @ или 0: I=ЕСЛИ(H3>0;НАЙТИ("@";A3;1);0)
3. определяем позицию второй @ или 0: j=ЕСЛИ(H3>1;НАЙТИ("@";ПСТР(A3;I3+1;100);1)+I3;0)
4. определяем содержимое до первой @: k=ПСТР(A3;1;I3)
5. определяем содержимое до второй @: L=ПСТР(A3;I3+1;I3)
6. Сравниваем: M=(K3=L3)
7. Результат: N=ЕСЛИ(M3;ПСТР(A3;I3+1;100);A3)

А чтобы скопировать колонку М на другой лист цепляй на кнопку макрос
Код:

Sub MyCopy()
    Dim Cтрока1, Колонка, Строка2, A
    Строка1 = 3
    Колонка1 = 14
    Sheets("Лист2").Select
    While Not IsEmpty(Cells(Строка1, Колонка1).Value)
        A = Cells(Строка1, Колонка1).Value
        Sheets("Лист3").Cells(Строка1, 1).Value = A
        Строка1 = Строка1 + 1
    Wend
End Sub


cheerio 22.02.2009 13:35

Цитата:

Сообщение от korotetsky (Сообщение 1629711)
такое ощущение что на это условное форматирование попросту забили.

http://on-line-teaching.com/excel/lsn014.html

korotetsky 22.02.2009 15:45

cheerio, поинтересоваться версией не приходило в голову ;)? на скринах максимум 2003-я версия, с которой проблем нету, как уже упоминалось

Alex Dark 23.02.2009 08:06

Цитата:

Сообщение от korotetsky (Сообщение 1635511)
с которой проблем нету, как уже упоминалось

А что у тебя так ни чего путного не получилось?
У меня 2003, но я спецом ходил на машину с 2007, не сразу но все получилось, вроде как и отписал об этом.
Главное - сначала очистить все условные форматирования, а потом начать создавать новые. Иначе они накладываются так что без бутылки не разобраться...

korotetsky 23.02.2009 11:49

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

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

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

Alex Dark 23.02.2009 19:29

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

Сообщение от Alex Dark (Сообщение 1635681)
Главное - сначала очистить все условные форматирования

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

Judge 25.02.2009 02:18

Цитата:

Сообщение от Alex Dark (Сообщение 1635855)
Твой пример в чистую на 2007 с нуля делал. Все ровно шло.

Если под "примером" ты имеешь ввиду
Цитата:

Сообщение от Alex Dark (Сообщение 1635855)
требовалось фильтрануть, залить. потом фильтрануть по другому критерию, и снова залить. вобщем заливка перестает работать на второй раз после второго фильтра

то у меня та же ерунда: после применения фильтрации по другому критерию ничего не заливается (простой спиок; никаких форматирований не производилось). http://mitosa.net/smileland/smiles/as/shok.gif
http://www.planetsmilies.com/smilies/sign/sign0094.gif Нечаянно нажал какие-то кнопки на клаве и получил в ячейке выпадающий список и теперь не знаю как от него избавиться.

AlexComper 14.03.2009 12:50

Цитата:

Сообщение от Judge (Сообщение 1636230)
Нечаянно нажал какие-то кнопки на клаве и получил в ячейке выпадающий список и теперь не знаю как от него избавиться.

Данные -> Фильтр -> Отобразить все

Rouk 10.04.2009 19:01

Помогите, пожалуйста, написать макрос.

Необходимо посчитать оптимальное количество заклепок в стыке из условий прочности.
Изначально в ячейке В13 задается число заклепок 2, дальше практически все расчетные формулы ссылаются на эту ячейку.
В результате всех расчетов получаю 4 ячейки В27, В32, В35, В38, к которых 4 значения запаса прочности - 4 числа; функцией И в ячейке В40 задала условие =И(B27>1;B32>1;B35>1;B38>1)...соответственно получается, если хотя бы в одной ячейке значение < 1, то в ячейке В40 пишется ЛОЖЬ, иначе ИСТИНА.
Теперь основная задача: необходимо автоматизировать процесс счетчиком таким образом, чтобы если в ячейке В40 значение ЛОЖЬ, то в ячейке В13 число заклепок увеличивается на 2 и снова производится расчет...соответственно получается новое значение в ячейке В40.
Расчет прекращается, когда в ячейке В40 получается значение ИСТИНА.

Можно продублировать формулы, так чтобы число заклепок прибавлялось не в ту ячейку, в которую изначально задается, но все равно все продублированные формулы должны каждый раз автоматически пересчитывать значения, в зависимости от значения счетчика, до тех пор пока все значения запасов будут >1.

Если, что-то непонятно из объяснений могу скинуть собственно екселевский файл с расчетом.

Alex Dark 13.04.2009 07:41

Естетственное не понятно. Файл в студию

Rouk 13.04.2009 20:17

Вложений: 1
Загружаю файл...надеюсь станет понятнее...там два расчета верхний куда вводится в ручную число заклепок - ячейка В15 и нижний (копия верхнего) где впоследствии должен автоматически проводится расчет с увеличением значения в ячейке В44 каждый раз когда в ячейке В68 "ЛОЖЬ".

Копию расчета сделала, так как суммировать в ячейку, в которую вручную задается значение наверное нельзя...соответственно необходимо чтобы суммирование проводилось автоматически в нижнем расчете в ячейке В44 и заканчивалось, когда в ячейке В68 будет значение "ИСТИНА".

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

Hubbitus 13.04.2009 22:18

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

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

EvroStandart 14.04.2009 10:45

И какое там правильное значение в ячейке В44?
Я пробовал вбивать варианты. Дошёл до 60. В ячейке В68 значение "ИСТИНА" не появилось.

Rouk 14.04.2009 11:45

это задача многовариационная, в ней варьируется также диаметр заклепок (В13) и высота стенки (В9)...но автоматический счетчик нужен только для количества заклепок (В15)...суть в том., что если при количестве заклепок 30 все еще значение В44 "ЛОЖЬ", то увеличивается диаметр заклепок, но уже вручную...там нестандартный ряд увеличения...

EvroStandart 15.04.2009 10:20

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

Сообщение от Rouk (Сообщение 1647672)
с увеличением значения в ячейке В44 каждый раз когда в ячейке В68 "ЛОЖЬ".

Цитата:

Сообщение от Rouk (Сообщение 1647855)
для количества заклепок (В15)... значение В44 "ЛОЖЬ"

Ты случайно сам в своей таблице не запутался?

В файл добавлено увеличение на ячейку В44

Plague 08.05.2009 11:48

дано:
последовательность чисел от 1 до хз скольки, ориентировочно 9000: таблица thread одного форума, точней одно из ее полей. Так как на форуме есть модераторы и есть раздолбаи, то соответственно, раздолбаи периодически создают, а модераторы удаляют топики не соответствующие Правилам форума. Соответственно, в нумерации остаются "дырки" то есть идет 1, 2, 3, 5, 6, 8 итд. То есть модераторы удалили в примере этой последовательности 4й и 7й триды. можно ли средствами Экселя сделать выборку недостающих значений?

TURNSKIN 08.05.2009 12:14

j:=0 //счётчик незаполниных фридов
for i:=1 to maxI-1 do // пробегаем весь список
x:=cellvalue(i,1) // получаем значение клетки
y:=cellvalue(i+1,1) // также следующию
if y<>x+1 then // условие: следующая клетка больше придедущей на 1
begin
free_numbers[j]=x+1 //заносим в масив
j:=j+1 // увеличиваем счётчик
end
else next // если условие НЕ выполнено идём к следующей ячейке
end for

//печатаем получившийся масив
for i:=1 to j do
cellvalue(i,2):= free_numbers[i]
end for

вот такой у меня получился псевдокод :)

Alex Dark 08.05.2009 12:53

Plague, как вариант, включение фильтра на пустое значение не подойдет?

Plague 08.05.2009 13:02

а подробней? оно не пустое, оно отсутствующее...

я тут просто еще кучу дел делаю щас посему башка наимутнейшая..

Hubbitus 10.05.2009 19:00

Plague, слушай, раз форум, то наверное Имха? Если Имха, то трэды эти из MySQL? Так может мы тогда сразу, без экселя напишем SQL-запрос чтобы выбрать недостающие значения???

P.S. У тебя же везде FreeBSD, при чем тут Excel? Ты на OO Calc будешь переносить ответы?

Комментарий Администратора:
Plague:
на имхе не 9ть тысяч тридов.. ;)

TURNSKIN 10.05.2009 20:00

я понимаю, что тема экселивская, но Hubbitus мог бы написать такой SQL запрос?
мне для общего развития :)

Alex Dark 12.05.2009 06:53

Всех с прошедшими праздниками и праздненствами!

Plague, возможно я тут что то упустил, но если ты решил получить результат экселем, то приаттач пример на 10-20 строк и там же укажи что хочешь выбрать, получить.


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

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