Ru-Board.club
← Вернуться в раздел «Программы»

» Excel FAQ

Автор: Mushroomer
Дата сообщения: 05.01.2006 19:51
German AW
Было уже много раз: Сервис -> Параметры -> Общие -> Стиль ссылок R1C1 -> галку снять.
Автор: Zerguei
Дата сообщения: 09.01.2006 12:42
Подскажите пож-та по следующем вопросу:
В свое время я был озадачен вот чем:

Цитата:

Автор: Zerguei, Отправлено:17:02 09-03-2005
Помогите пож-та решить вот такую задачу:
у меня есть файл с большим кол-вом листов. На каждом листе столбец С - это данные по позициям в других столбцах. Эти данные - либо числа, либо буквенные обозначения. Вперемешку вобщем. Так вот - задача все численные значения увеличить на, например, 12%, а буквенные значения не трогать. Какой функцией воспользоваться чтобы это сделать и как ее прописать?


Спасибо,
Zerguei


в итоге было найдено следующее решение:


Цитата:

Sub procent12()
For Each S In ActiveWorkbook.Worksheets
S.Activate
For Each R In ActiveSheet.UsedRange.Rows
If IsNumeric(Cells(R.Row, 3)) Then
Cells(R.Row, 3) = Cells(R.Row, 3) * 1.12
End If
Next R
Next S
End Sub


все отлично работало в англоязычном Office XP, но сейчас установили Office 2003, причем русскоязычный и данный макрос отказывается работать, мотивируя это следующим сообщением:


Цитата:

Compile error:

Invalid Outside Procedure


В чем дело???
Автор: Mushroomer
Дата сообщения: 09.01.2006 13:09
Zerguei
Зачем так сложно? =ЕСЛИ(Т(A6)="";A6*1,12;A6) подойдет?
Автор: Zerguei
Дата сообщения: 09.01.2006 13:21
Mushroomer
В принципе да - очень просто, я этого не знал.
Поскольку действие разворачивается на 50 листах, а столбцы одни и те-же (в моем случае №3) можно все сделать одновременно на всех листах, выделив их и вставив столбец с формулами на одном.. А потом таким же образом скопровать столбец с готовыми цифрами и вставить его в исходник, предварительно сохранив все в виде значений, а не формул.
Спасибо, упростил все донельзя -)

Но все же макрос все делал в тех же столбцах, мне исходники то не нужны потом.


Автор: Mushroomer
Дата сообщения: 09.01.2006 13:33
Zerguei
Я в макросах ничего не смыслю. Подожди, может кто-то ответит. Здесь есть отличные специалисты по макросам.
Автор: Zerguei
Дата сообщения: 09.01.2006 13:37
Mushroomer
в том то и дело, что я тоже ничего в них не смыслю.. Но твой вариант очень хорош - не поверишь, но я уже все сделал, так что вопрос снят -)))

Спасибо огромное -)
Автор: Yuk
Дата сообщения: 09.01.2006 17:47
Zerguei
Можно еще проще, без формул и дополнительных ячеек. Ввести 1.12 в отдельную ячейку где угодно, скопировать в буфер. Затем выделить область, специальная вставка, умножить. Обрати внимание, пустые ячейки будут содержать 0.
Автор: Zerguei
Дата сообщения: 09.01.2006 17:53
Yuk
Это слишком просто - это я знаю -))
Только ячейки, которые не содержат 0, а содержат буквенные значения будут отображаться диезами -)
Автор: Yuk
Дата сообщения: 09.01.2006 18:01
Zerguei
У меня макрос работает, Офис 2003 СП1 английский. Русского нет, так что протестировать не могу. Проверь функцию IsNumeric в русском офисе.

Добавлено:
Zerguei

Цитата:
Только ячейки, которые не содержат 0, а содержат буквенные значения будут отображаться диезами

Ну, не знаю. Я проверил, буквенный ячейки игнорируются. Очередная "фича" русского офиса?
Автор: rosalin
Дата сообщения: 10.01.2006 16:12
Уважаемые All
подскажите такой трабл

Excel 2003 sp2

При редактировании листа не видно заливки ячеек но на предосмотре все видно..

Помогите плиз горю...
Автор: jrd32
Дата сообщения: 12.01.2006 07:40
Помагите!
Надо написатьscript каторый будет запускать через кнопку в EXEL текстовый документ, каторый в себе содержит = допустем:
00.
01.qwertyuiopasdfghEXEL00jklzxcvbnm
02.qwertyuiopasdfghEXEL01jklzxcvbnm
03.qwertyuiopasdfghEXEL02jklzxcvbnm
04.
05.qwertyuiopasdfghEXEL03jklzxcvbnm
06.qwertyuiopasdfghEXEL04jklzxcvbnm
07.qwertyuiopasdfghEXEL05jklzxcvbnm
08.
09.
10.
11.qwertyuiopasdfghEXEL06jklzxcvbnm
12.qwertyuiopasdfghEXEL07jklzxcvbnm
13.qwertyuiopasdfghEXEL08jklzxcvbnm
14.qwertyuiopasdfghEXEL09jklzxcvbnm
15.qwertyuiopasdfghEXEL10jklzxcvbnm
16.qwertyuiopasdfghEXEL11jklzxcvbnm

Вот это всё надо через VB - од страки 19 до 25 "EXEL00" ввести в лист (list1) exel под
сабои так чтоб небыли пустые пространства как строки 00. ;08.; итд.....
вот так:

EXEL00
EXEL01
EXEL02
EXEL03
EXEL04
EXEL05
EXEL06
EXEL07
EXEL08
EXEL09
EXEL10
EXEL11

(на каждую строку)

Потом кокда выйдет токая строница (лист1) с такими данными то надо из этого сделать Диограму в 2D.
Спасибо за рание.
Автор: BBBri
Дата сообщения: 12.01.2006 11:50
jrd32
Юмор в другом топике
Автор: andj25
Дата сообщения: 12.01.2006 14:59
у меня такой вопрос

есть ряд ячеек которые считаются так
А3=константа
В3=В1 + В2 + А3
С3=С1+ С2 + В3
.... и так далее

ну вот мене нужно что бы результат в ячеке В3, С3 ... попадал в заданный инетрвал к примеру от 20000 до 20999 приэтом изменяя ячеку В2, С2 ... соответственно (необходимо также условие что бы В2 было округлено на -3 знака, т.е. было бы к примеру 1000, 33000, 444000 и так далее)

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

может есть какая то формула?
функцию подбор параментра не предлагать смысла нет ... хотя если как то ее автоматизировать ... наверно можно и ее заюзать
Автор: Mushroomer
Дата сообщения: 12.01.2006 18:59
andj25
Формулы понятно как у тебя устроены. А вот дальше непонятно, что ты хочешь.
Результат хотя бы в ячейке B3 зависит от В1, В2, А3. Т.е. если ты хочешь, чтобы он попадал в какой-то диапазон, то надо же как-то значения В1, В2, А3 подбирать специально. или ты хочешь чтобы Excel сам за тебя подобрал все значения? У тебя только значение B2 должно быть с 3 нулями?
Автор: andj25
Дата сообщения: 13.01.2006 07:03
в строку 1 (то есть ячеки В1, С1 ...) значения попадают из других мест то есть они не завязаны на остальные указанные в формуле значения

то есть мне надо что бы 1 только значение подбиралось экселем

ну например

А3=345
В1=560023
С1=73947
В3=345+560023+(??) _(1)_
С3=В3+73947+(??) _(2)_
....

ну вот .. получается что мне нужно сначала найти в (1) формуле значения, потом во (2) ... и так далее
Автор: DKazakov
Дата сообщения: 13.01.2006 09:55
rosalin
если нашел решение, напиши, такая же хрень
Автор: Looking
Дата сообщения: 13.01.2006 10:12
andj25
А в курсе, что Excel позволяет проводить итерационные вычисления?
Для этого в "Сервис", "Параметры", "Вычисления" надо поставить "Птичку" и соответствующие значения.
Например есть уравнение X=3/(1+2*SIN(X))
Численное решение (путем программирования, а не Excel) это решается следующим итерационным процессом.
1. Задается начальное значение X, например X=1.
2. Подставляется в правую часть и вычисляется.
Получаем X=1,1181755...
3. Полученное значение подставляем в правую часть и получаем новое значение
X=1,071961455...
4. Продолжаем процесс
X=1,088423086...
При этом контролируем разницу между предыдущим и последующим значением X
Процесс может быть сходящимся - когда разница уменьшается и расходящимся - увеличивается (подробности смотри в численных методах). При сходящемся процессе в результате получим значение X с требуемой точностью. Дополнительно контролируется число итераций, что-бы не получить бесконечный цикл.

В Excel данный пример реализуется записью в ячейке С2 формулы =3/(1+2*SIN(B2)),
а в ячейке B2 формулы =C2.
Имеем циклическую сылку и итерацию (нужно разрешить ее в настройках).
Получаем результат X=1,083959... при границе итераций 1000 и точности 0.00001
Автор: andj25
Дата сообщения: 13.01.2006 10:59
ну вот
смотрите так я сделал формулы



поставил число итераций 1

результат



а мне то нужно что бы в ячейке В5 было число от 20000 до 20999

... мне что ли с числом итераций играться? .... тогда опять как то не очень удобно
Автор: Looking
Дата сообщения: 13.01.2006 11:36
Число итераций должно быть большим, достаточным для достижения требуемой точности, если процесс сходящийся. При сходящемся процессе увеличении числа итераций точность вычислений должна увеличиваться (в случае, если заданная погрешность еще не достигнута).
Сейчас нет времени разбираться с твоим конкретным примером. Попробуй сам, если не получится, позднее посмотрю, что у тебя и как
Автор: andj25
Дата сообщения: 13.01.2006 12:25
буду ждать тебя
измение числа итераций ничего не дает

помоему надо рыть в другую сторону ... но вот в какую ... я пока не определился
Автор: Looking
Дата сообщения: 13.01.2006 12:52
А вообще, помоему, ты поставил задачу с ног на голову.
Если посмотреть на твои формулы, то видно, что столбцы не зависят от последующих, поэтому надо решать задачу последовательно.
Тебе надо получить в 5-ой строке попадание числа в определенный диапазон, ну и задай в нем конкретное значение например в B5=20000 (или 20500 - середина диапазона), тогда неизвесным будет только одно - то, которое ты пытаешься подобрать и задача становится тривиальной.
B5=A5+B3-B4 следовательно B4=B5-A5-B3 Получаем в B4 -490041
Округление здесь вообще неизвестно для чего...
Аналогично получаем и для последующих столбцов
Автор: andj25
Дата сообщения: 13.01.2006 15:26
округление для того что бы было число кратное тысячи

причем по строке в каждой ячейке должно быть число из диапазона [20000;20999]

и ты прав мне надо последовательно делать подбор для каждой ячейки ... так из формул это и так понятно вроде ...
на самом деле формул то больше ... просто я упростил ситуацию
Автор: KAM1
Дата сообщения: 13.01.2006 15:39
SOS!!! Помогите,пожалуйста,составить ф-лу в EXEL ! (без использования цикл.ссылки и макроса).
1.Если я хочу в яч.С1 ввести ф-лу: =ЕСЛИ(А1=СЕГОДНЯ();В1), то значение из В1 попадает в
С1,если дата в А1 совпадает с сегодняшней датой,иначе знач.С1 обнуляется (и во всех др.яч.,где введена подобная ф-ла зн.также обнуляются). Если ввести ф-лу в С1
=ЕСЛИ(А1=СЕГОДНЯ();В1;С1), ф-ла циклится (что недопустимо).
Большой вопрос и просьба: Напишите,пож.,ф-лу, которая оставляла бы в случае несовпадения даты старое значение в ячейке,куда внесена эта ф-ла.
2.Если мне необходимо в яч.С1 ежедневно накапливать сумму (т.е.использовать С1 как сумматор,без обнуления значения С1 за предыдущий день). Данные берутся из разных ячеек,которые отвечают заданным ф-лой в яч.С1 условиям. Имеющиеся в EXEL станд.ф-лы
типа =СУММ() или СУММЕСЛИ() здесь не проходят.

Будь другом, помоги "Чайнику"!
Автор: andj25
Дата сообщения: 13.01.2006 16:06
а почему нельзя сделать так

=ЕСЛИ(А1=СЕГОДНЯ();В1;0)

если условие выполняется - В1
если условие не выполняется - 0

про накапливание не понял, можно считать кол-во дней от определенной даты типа (нужная дата)-(сегоне)
Автор: KAM1
Дата сообщения: 13.01.2006 17:10
2 andj25
Нужно, чтобы заносился не 0, а оставалось старое значение.
Автор: evle
Дата сообщения: 13.01.2006 17:51
KAM1
В ячейке есть либо формула, либо значение. Причем формула при пересчете не знает, какое значение было до этого. Ищи другие способы решения своей задачи.
Автор: KAM1
Дата сообщения: 13.01.2006 17:58
evle
В ячейке может быть и формула и значение. Формула заносится, чтобы было значение.
Автор: evle
Дата сообщения: 13.01.2006 17:59
KAM1
Откуда такая уверенность?
Автор: pikvvik
Дата сообщения: 13.01.2006 18:26
2 KAM1
Все же послушайте evle, или почитайте документацию
Автор: vlanatti
Дата сообщения: 13.01.2006 19:25
Люди помогите кто может :
как дополнять список, из вводимых данных в одну и ту же ячейку,
при условии того что в списке есть итоговая, которая должна быть
постоянно с промежутком в одну пустую стороку от последней записи в списке.
Данные вводятся в постоянные ячейки на Листе 1
Список формируется на Листе 2.
Спасибо заранее!

Добавлено:
Да, извините, забыла сказать у меня excel2003

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Gentoo Linux


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.