Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] помогите правильно подтянуть формулу (http://forum.oszone.net/showthread.php?t=288298)

vanoman 22-09-2014 14:41 2405715

помогите правильно подтянуть формулу
 
есть формула
=СРЗНАЧ(C2:C46)
когда я её тяну вниз то она изменяется так
=СРЗНАЧ(C3:C47)
а можно сделать, чтобы когда её тянешь вниз она принимала такой вид
=СРЗНАЧ(d2:d46)

Iska 22-09-2014 15:20 2405729

Нет. Вы ведь вниз тянете, а не вправо.

Что за документ такой интересный? Можете приложить?

a_axe 22-09-2014 17:00 2405764

Вложений: 1
vanoman, где-то похожий эффект будет, если дополнительно ввести столбик со значением смещения (в примере рядом со средним значением слева, в принципе - его можно в любом месте можно разместить) и использовать функцию "смещ". Ссылки на диапазон должны быть абсолютными (со знаками $). Из минусов - ссылаться каждая ячейка все равно будет на C2:C46, т.е. сама формула разумеется меняться не будет.

=СРЗНАЧ(СМЕЩ($C$2:$C$46;0;B49))

vanoman 22-09-2014 18:53 2405812

Iska, a_axe,
смотрите, вот файл
надо, чтобы когда тянешь вниз, значения по ячейкам изменялсь так
Столбец С2
сейчас
Код:

=лист1!$B$1
надо, чтобы когда потянул вниз стало
Код:

=лист1!$C$1
столбец d2
сейчас
=СРЗНАЧ(лист1!B2:B46)
надо чтобы был
=СРЗНАЧ(лист1!с2:с46)


столбец е2
сейчас
=СРЗНАЧ(лист1!B47:B69)
надо чтобы был
=СРЗНАЧ(лист1!с47:с69)

столбец f2
=(D2-E2)/КОРЕНЬ(((45-1)*(СТАНДОТКЛОН.В(лист1!B2:B46)^2)+((23-1)*(СТАНДОТКЛОН.В(лист1!B47:B69)^2)))/((45+23-2))*(((1/45)+(1/23))))
надо , чтобы было, когда тянешь вниз
=(D3-E3)/КОРЕНЬ(((45-1)*(СТАНДОТКЛОН.В(лист1!с2:с46)^2)+((23-1)*(СТАНДОТКЛОН.В(лист1!с47:с69)^2)))/((45+23-2))*(((1/45)+(1/23))))

столбец g2
=СТАНДОТКЛОН.В(лист1!B2:B46)
ну понятно нужно, чтоб стал
=СТАНДОТКЛОН.В(лист1!с2:с46)

Iska 22-09-2014 19:22 2405822

vanoman, я ж написал — так, как Вы описываете, не выйдет. Будете тянуть вниз — формулы будут корректироваться именно с учётом направления «вниз», а не как-то иначе.

А если Вам транспонировать данные на «лист1», а?

okshef 22-09-2014 21:20 2405876

a_axe, чуть-чуть не дожал :). Не нужно возиться с доп. столбцом.
vanoman, замените в ваших формулах

лист1!B2:B46 на
Код:

СМЕЩ(лист1!$A$1;1;СТРОКА(A1);45;)
и лист1!B47:B69 на
Код:

СМЕЩ(лист1!$A$1;46;СТРОКА(A1);23;)
и тяните на здоровье

vanoman 22-09-2014 21:39 2405892

Iska, это вы не поняли мою идею. Например с поправками okshef, все он тянет и все высчитывает как надо)
только такой вопрос
45 это кол-во единиц
а 23 кол-во двоек, так группы мои поделились
если там единиц будет 100, а двоек 90 Формулы будут так идти?
Код:

СМЕЩ(лист1!$A$1;1;СТРОКА(A1);100;)
СМЕЩ(лист1!$A$1;46;СТРОКА(A1);90;)

А в идеале(я об этом и не прошу)
вот в формуле
Код:

=(D3-E3)/КОРЕНЬ(((45-1)*(СТАНДОТКЛОН.В(СМЕЩ(лист1!$A$1;1;СТРОКА(A2);45;))^2)+((23-1)*(СТАНДОТКЛОН.В(СМЕЩ(лист1!$A$1;46;СТРОКА(A2);23;))^2)))/((45+23-2))*(((1/45)+(1/23))))
в этом месте
Код:

КОРЕНЬ(((45-1)
вместо 45 стояло кол-во единиц
здесь
Код:

2)+((23-1)*(СТАНДОТКЛОН.В(С
здесь вместо 23 стояло реально кол-во двоек
в этом тоже самое
Код:

/((45+23-2))*(((1/45)+(1/23))))
вместо 45 реально кол-во единиц, а вместо 23 реальное кол-во двоек

потому что кол-во единиц и двоек каждый раз разное

okshef 22-09-2014 22:01 2405906

Нет. Справка к формуле СМЕЩ гласит

Цитата:

СМЕЩ(ссылка; смещ_по_строкам; смещ_по_столбцам; [высота]; [ширина])
используем СЧЁТЕСЛИ(Лист1!$A:$A;1) для 1 и СЧЁТЕСЛИ(Лист1!$A:$A;2) для 2
В итоге конечные формулы приобретают вид:
По 1
Код:

СМЕЩ(лист1!$A$1;1;СТРОКА(A1);СЧЁТЕСЛИ(Лист1!$A:$A;1);)
По 2
Код:

СМЕЩ(лист1!$A$1;СЧЁТЕСЛИ(Лист1!$A:$A;1)+1;СТРОКА(A1);СЧЁТЕСЛИ(Лист1!$A:$A;2);)
Но учтите, что
  1. при добавлении строк сверху во второй формуле нужно менять СЧЁТЕСЛИ(Лист1!$A:$A;1)+1 1 на количество строк
  2. 1 должны идти перед 2 (как сейчас)
  3. 1 и 2 не должны перемешиваться

Цитата:

Цитата vanoman
А в идеале(я об этом и не прошу) »

я ответил

Iska 22-09-2014 22:28 2405922

Цитата:

Цитата vanoman
Iska, это вы не поняли мою идею. Например с поправками okshef, все он тянет и все высчитывает как надо) »

Я Вашу идею вполне понял. И повторю ещё раз: пересчёт относительных ссылок в формулах при протаскивании происходит строго в направлении протаскивания.

И с выкладками коллеги okshef — точно так же, ничего не изменилось ;). Вы же видите, как это происходит — за счёт индексов. Я и не сомневался, что кто-нибудь предложит Вам обходной путь, потому и прошу всегда выкладывать образцы документов.

vanoman 22-09-2014 22:42 2405929

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

okshef 22-09-2014 23:07 2405938

Простите, не учел, что формулы на 2-м листе. Добавьте Лист1! перед $A:$A
Формулы поправил.

vanoman 22-09-2014 23:23 2405945

да, теперь верно

самая главная формула у меня выглядит вот так
=(D2-E2)/КОРЕНЬ(((45-1)*(СТАНДОТКЛОН.В(СМЕЩ(лист1!$A$1;1;СТРОКА(A1);СЧЁТЕСЛИ(лист1!$A:$A;1);))^2)+((23-1)*(СТАНДОТКЛОН.В(СМЕЩ(лист1!$A$1;СЧЁТЕСЛИ(лист1!$A:$A;1)+1;СТРОКА(A1);СЧЁТЕСЛИ(лист1!$A:$A;2);))^2) ))/((45+23-2))*(((1/45)+(1/23))))

Вы точно уверены, что в эти места ничего не прописать, что они автоматически подставляли цифры?

okshef 23-09-2014 00:11 2405964

vanoman, я думал вы догадаетесь, и сами замените. Можно, конечно.

vanoman 23-09-2014 10:52 2406071

okshef, сорьки, я не самый тут крутой спец. мне сложно пока столь большими формулами манипулировать. Может покажете)

okshef 23-09-2014 23:31 2406333

45 замените на СЧЁТЕСЛИ(Лист1!$A:$A;1)
23 - на СЧЁТЕСЛИ(Лист1!$A:$A;2)

vanoman 24-09-2014 08:34 2406396

okshef, а как сделать, чтобы, когда тянешь вниз b1 стало с1, то есть мне нужно , чтобы в этом документе, на втором листе в ячейке с2 отображалось слово ,которое стоит в ячейке b1 на листе1, в ячейке с3 второго листа стояло слово, которое стоит в ячейке с1 первого листа. Там всего 6 фраз ,6 переменных, но там потом их будет 200. Я просто не хочу во втором листе механически называть ячейки.

okshef 24-09-2014 08:36 2406397

Аналогично, тоже с помощью индексов:
Код:

=ИНДЕКС(лист1!$B$1:$G$1;1;СТРОКА(A1))
Формула для вашего файла, диапазон лист1!$B$1:$G$1 нужно будет расширить до реального.

vanoman 24-09-2014 10:29 2406433

все получилось.

vanoman 26-09-2014 13:25 2407264

Ещё вопросик по вбивки формулы
 
Друзья, великодушно прошу мне ещё помочь.:)
Помогите, пожалуйста вбить исчисление ,но при помощи вба. в этом файле. Например, ячейка b72 и b73 надо, чтобы именно через vba высчитывалась эта формула
в ячейке b74 =количество единиц * кол-во двоек (из столбца А)-b72+кол-во единиц*(кол-во единиц+1)/2 = 45*23-1394+45(45+1)/2=676
в ячейке b75 =количество единиц * кол-во двоек (из столбца А)-b73+кол-во двоек*(кол-во двоек+1)/2=45*23-952+23*(23+1)/2=359
Ну, с учетом того, что в будущем в этом файле будут сотни чисел. и значения могут быть и в ячейке b172 и так далее.

a_axe 26-09-2014 14:14 2407281

Цитата:

Цитата vanoman
при помощи вба »

чем вызвана необходимость использовать именно VBA?
формулами задача решается достаточно просто:
вбейте в b74 формулу
"=СЧЁТЕСЛИ(A2:A69;1)*СЧЁТЕСЛИ(A2:A69;2)-B72+СЧЁТЕСЛИ(A2:A69;1)*(СЧЁТЕСЛИ(A2:A69;1)+1)/2"

в b75 формулу
"=СЧЁТЕСЛИ(A2:A69;1)*СЧЁТЕСЛИ(A2:A69;2)-B73+СЧЁТЕСЛИ(A2:A69;2)*(СЧЁТЕСЛИ(A2:A69;2)+1)/2"

Соответственно, если данных станет больше, нужно заменить в формулах диапазон "A2:A69" на фактический.

vanoman 26-09-2014 15:51 2407320

a_axe, именно в том и необходимость, чтобы вручную диапазоны не менять

a_axe 26-09-2014 19:01 2407379

Вложений: 1
vanoman, предлагаю поднять расчетные ячейки над таблицей данных. В этом случае вы можете в таблицу вставлять практически любое количество (в примере - 500 строк).
Цитата:

Цитата vanoman
чтобы вручную диапазоны не менять »

Мне кажется, что проще выделть две ячейки, нажать замену (ctrl+h) и заменить "A69" на "A500" , чем писать макрос. Впрочем, дело личных предпочтений.

Iska 26-09-2014 22:19 2407426

Чтобы не менять диапазоны вручную, пользуют имена.

vanoman 28-09-2014 14:29 2407875

Iska, это как?

Iska 28-09-2014 19:39 2408004

Вот так.


Время: 21:23.

Время: 21:23.
© OSzone.net 2001-