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

» Excel FAQ (часть 2)

Автор: Dixi257
Дата сообщения: 12.04.2006 16:35
greenfox
До создания документа:
Меню - Сервис - Парамеры - Общие - Стандарный шрифт
После создания документа, только - выделить все...
Автор: pikvvik
Дата сообщения: 12.04.2006 16:41
2 greenfox
На первом листе нажмите кнопку выделить все.
Удерживая Shift щелкните левой кнопкой мыши на ярлычке последнего листа
И далее так, как Вы уже делали...
Автор: olskrip
Дата сообщения: 13.04.2006 13:46
Подскажите плз., как заставить макрос VB повторяться заданное количество раз?
Автор: Mantisby
Дата сообщения: 15.04.2006 17:37
подскажите, как значение ячеек одного столбца сделать комментариями к соотв ячейкам другого столбца?
Автор: Troitsky
Дата сообщения: 15.04.2006 18:38
Mantisby
Макросом. В простейшем случае:
Код: Dim Col1 As Integer, Col2 As Integer

Col1 = 1 ' столбец, к ячейкам которого нужно добавлять коментарии
Col2 = 2 ' столбец с текстом коментариев

For i = 1 To 10
With ActiveWorkbook.ActiveSheet
.Cells(i, Col1).AddComment
.Cells(i, Col1).Comment.Text Text:=.Cells(i, Col2).Text
End With
Next i
Автор: Mantisby
Дата сообщения: 15.04.2006 21:54
Troitsky

Код: Sub comment()
Dim Col1 As Integer, Col2 As Integer

Col1 = B
Col2 = N

For i = 2 To 250
With ActiveWorkbook.ActiveSheet
.Cells(i, Col1).AddComment
.Cells(i, Col1).comment.Text Text:=.Cells(i, Col2).Text
End With
Next i
End Sub
Автор: Troitsky
Дата сообщения: 15.04.2006 21:56
Mantisby

Цитата:
выдает 1004 ошибку


А вот это что такое?

Цитата:
Col1 = B
Col2 = N

Тип же целого поставлен. Цифрами нужно задавать.

Добавлено:

Код: Col1 = 2
Col2 = 14
Автор: Mantisby
Дата сообщения: 15.04.2006 23:17
Troitsky
то, что надо, большое спасибо

ещё маленький вопрос, можно ли комментариям сразу зада вать размер - в идеале N по ширине и по размеру текста по вертикали?
Автор: Troitsky
Дата сообщения: 16.04.2006 12:17
Mantisby

Цитата:
можно ли комментариям сразу зада вать размер - в идеале N по ширине и по размеру текста по вертикали?

Не знаю понял ли вопрос правильно.
Для задания автоматического размера примечанию можно использовать такой код:
Код: .Cells(i, Col1).Comment.Shape.TextFrame.AutoSize = True
Автор: Mantisby
Дата сообщения: 16.04.2006 16:20
Troitsky
смысл в том, что в комментарий загоняется описание к фильму, и дефолтный размер (50х50) ессно не устраивает. Не руками же его менять


Цитата:
.Cells(i, Col1).Comment.Shape.TextFrame.AutoSize = True

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


Какие проблемы нашел:

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

з.ы. Сорри за возможно простые вопросы, но я в не шарю в этом деле
Автор: Troitsky
Дата сообщения: 16.04.2006 17:04

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

Так точно.

Цитата:
в комментарий заносятся только первые 1024 символа

Можед быть это ограничение самого Excel'я?

Цитата:
как все три действия (удаление старого, добавление нового и установление размера) оформить одним макросом?

Про установление размера я уже говорил, затрудняюсь желаемое реализовать, а в остальном:
Код: Dim Col1 As Integer, Col2 As Integer

Col1 = 1 ' столбец, к ячейкам которого нужно добавлять коментарии
Col2 = 2 ' столбец с текстом коментариев

For i = 1 To 10
With ActiveWorkbook.ActiveSheet
.Cells(i, Col1).ClearComments
.Cells(i, Col1).AddComment (.Cells(i, Col2).Text)
.Cells(i, Col1).Comment.Shape.Height = 150 ' высота
.Cells(i, Col1).Comment.Shape.Width = 250 ' ширина
End With
Next i
Автор: Mantisby
Дата сообщения: 16.04.2006 17:15
Troitsky

Цитата:
Можед быть это ограничение самого Excel'я?

ты имеешь в виду ограницения макроса? Потому что в комментарий руками можно сколько угодно символов засунуть.


Цитата:
Про установление размера я уже говорил

можно ограничиться фиксированными размерами


Цитата:
а в остальном:

большое спасибо!

Добавлено:
Troitsky
по ресайзу нашел следующее решение http://www.contextures.com/xlcomments03.html#Resize

ищу по поводу 1024 символов...

Добавлено:
нашел. Надо передавать не Text а Value. Только при этом не должно быть пустых ячеек.

поэтому очередной вопрос Как сделать проверку пустых яччек, если в ячейке пусто, то комментарий не добавляется?
Автор: Troitsky
Дата сообщения: 16.04.2006 18:22
Mantisby

Цитата:
ищу по поводу 1024 символов...

Поэкспериментировал я тут на эту тему. Можно видимо и программно добавить примечание больше чем в 1024 символа, только делать это нужно в несколько проходов, добавляя текст частями меньшими, чем 1024 символа.
Проблема в другом: известно, что в ячейке может находиться до 32767 символов, но в ячейке отображаются только 1024 символа. Так вот свойство Text ячейки также возвращает только первые 1024 символа, которые макросом в комментарий и добавляются.
В какую сторону тут хитрить, чтобы обмануть Excel, нужно думать. Стоит ли?

Добавлено:

Цитата:
нашел. Надо передавать не Text а Value. Только при этом не должно быть пустых ячеек.

Да не в этом дело. даже использование:
Код: CStr(.Cells(i, Col2).Value)
Автор: Mantisby
Дата сообщения: 16.04.2006 19:25
Troitsky
так мне же не для промышленного использования главное, что работает.

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

Добавлено:

Цитата:
не решает проблему больших комментариев.

я в этом смыслю немного, но вот такой код работал


Код: Sub comment()
rij = 2
Do Until rij = 7
With Sheets("All").Range(Cells(rij, 2), Cells(rij, 2))
.ClearComments
.AddComment Text:=.Parent.Range(Cells(rij, 14), Cells(rij, 14)).Value
End With
rij = rij + 1
Loop

End Sub
Автор: slech
Дата сообщения: 16.04.2006 22:02
Знатоки.
Помогите пожалуйста.
Пытаюсь воспользоваться функцией ЕСЛИ
до 1350 - 8%
1350-16200 -13%
больше 16200 -20%

=ЕСЛИ(C14<1350;8;ЕСЛИ())

А как быть дальше ?
Незнаю как придумать логическое выражение
>=1350 но <=16200

Как быть ?
Автор: Mushroomer
Дата сообщения: 16.04.2006 22:14
slech
=ЕСЛИ(C14<1350;8;ЕСЛИ(C14<=16200;13;20))
Автор: slech
Дата сообщения: 17.04.2006 17:50
Mushroomer
Спасибо.

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

А теперь пишет среднее. Как исправить обратно ?
Автор: Mady
Дата сообщения: 17.04.2006 18:11
slech

Цитата:
Есть ещё проблемка.
По умолчанию в экселе когда выделяешь ячейки то снизу подсчитывается их сумма и пишет сумма.

А теперь пишет среднее. Как исправить обратно ?

Нажать правую клавишу мышки в окошке, где показывается сумма, и выбрать "сумма".
Автор: Minoz
Дата сообщения: 17.04.2006 18:15
Хм.. Есть ли аналог функции =СУММЕСЛИ, но для работы с текстом. Например, нужно просмотреть диапозон А1:А100, на предмет совпадения с ячейкой В1, и при совпадении "отобразить" текст из ячейки С1
Автор: slech
Дата сообщения: 17.04.2006 21:44
Mady
Всё понял, спасибо...
Автор: Yuk
Дата сообщения: 17.04.2006 22:40
Minoz
Например, так:

Код: =IF(COUNTIF($A$1:$A$5,B1)>0,$C$1,"")
Автор: Mushroomer
Дата сообщения: 18.04.2006 06:00
Yuk
Приведи, пожалуйста, пример, когда функция возвращает #N/A. А то я только Нет данных могу сгенерировать.
Автор: Yuk
Дата сообщения: 18.04.2006 17:12
Mushroomer
Например,
=ПОИСКПОЗ(C1;A1:A5;0)
возвращает #N/A, если C1 не встречается в A1:A5.
(Формулу перевел с английского, извиняюсь, если не правильно. #N/A в русском может именно Нет данных.)

В принципе, вопрос можно расширить. Если формула возвращает ошибку (любую), как сделать это условием для условного форматирования?


Добавлено:
Уже нашел
http://www.meadinkent.co.uk/conditional-formatting2.htm
Причем я это пробовал, но забыл сменить Cell Is на Formula Is.
Автор: AnitrA
Дата сообщения: 21.04.2006 17:59
народ не успеваю читать полностью топик из-за работы.. вы уж простите если такой вопрос возникал уже ранее.

Господа хотел бы получить вашу консультацию по следующему вопросу.


Скажем у меня есть

документ Elxcel который содержи 3 листа А и B и С

Задача:
Нужно реализовать динамическое обновления листа А при изменениях в B и С. Как сделать такие привязки в Excel-е. (то есть затык у меня в том не в то как добавить 1 ячейку из В в А, а в том как добавлять… ну скажем диапазон ячеек которые появляются в Б и С)

Пример алгоритмик или что-то в этом роде… того что я бы хотел получить.

1. Лист А содержит в себе основные строки OC1 и ОС2 а также ОС3 и ОС4
Лист В ) пуст (но в нем есть 2 строки В1 и В2 между которыми я буду в бивать инфу. Диапазон всех строк с данными между ними должен отображаться в А динамически. Лист С устроен аналогично листу Б.

2. Заношу данные в лист В заполняю строки между В1 и В2 скажем (2 3 4 8 7 9 7)
При этом в листе А между ячейками ОС1 и ОС2 появляются данные (2 3 4 8 7 9 7)

3. Произвожу заполнение листа С также как и б но с инфой ( в а п н у и з)
В листе А между строками ОС3 и ОС4 происходит заполнение данных из С)

4. Изменяю лист В дополняя в него между В1 и В2 еще 3 ячейки с данными (5 5 5)
В листе А между ОС1 и ОС2 долно появится следующее (2 3 4 8 7 9 7 5 5 5)
Причем изменится должен только диапазон (количество ячеек) точесть между ОС1 и ОС2 дожно появится 3 новых ячейки причем так чтоб другие данные не входящие в диапазон никак не изменялись). То есть скажем если у нас

1 –я ячейка=ОС1
2-я =ОС2

Количество ячеек с данными будет рано 2м после проведения например добавления диапазона ячеек В1- В2 из листа В в А должна сложиться следующая ситуация

1-я ячека=ОС1
2 = 2
3= 3
4=4
5=8
6=7
7=9
8=7
9=5
10=5
11=5
12-я = ОС2

Блин надеюсь вы поймете и поможете
Автор: Dim75
Дата сообщения: 21.04.2006 20:04
Подскажите, как можно через формулу или функцию данные находящиеся в строках по столбцам, разнести в один столбец. Т.е. без постоянного указания на нужную ячейку или замену букв в имени столбца. Грубо говоря функция транспортировать, но с живой привязкой к ячейкам в столбцах, так, как мы это делаем указывая ячейку в столбце и заполняем потянув за маркер.
[]
Автор: Yuk
Дата сообщения: 21.04.2006 23:09
Dim75
Имеется в виду сделать, например, из матрицы 5х5 колонку 25х1?
Если так, я такое делал только через макро. По-моему, единственное решение, Буду рад, если не прав.
Автор: Yuk
Дата сообщения: 23.04.2006 09:27
AnitrA
Можно через макро, например, так.
в ThisWorkbook (Code):

Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oc2 As Range, oc4 As Range
Select Case Sh.Name
Case "B"
Set oc2 = Range("oc2")
oc2.Insert (xlDown)
ThisWorkbook.Worksheets("A").Cells(oc2.Row - 1, oc2.Column).Value = Target.Value
Case "C"
Set oc4 = Range("oc4")
oc4.Insert (xlDown)
ThisWorkbook.Worksheets("A").Cells(oc4.Row - 1, oc4.Column).Value = Target.Value
End Select
End Sub
Автор: AnitrA
Дата сообщения: 24.04.2006 08:53
Что-то у меня ничего не добовляется..
Да не запускается что-то... его нет даже в списке запускаемых макросов... Куды его вставлять-то подскажи? а то я в VB пихал ( да хотел сразу спросить а В и С ячеки находятся на разных листах книги?)
Автор: surgutfred
Дата сообщения: 24.04.2006 09:12
Подскажите плиз, есть таблица
Контрагент Признак
вася да
вова нет
петя да
вова нет
вася да
петя нет
Как видите контрагенты могут встречаться несколько раз(больше 2) признак разный, мне нужно отобрать тех контрагентов, у которых во всех вхождения признак "нет". В макросах не силен, можно как то стандартными формулами?
Автор: Mushroomer
Дата сообщения: 24.04.2006 09:30
surgutfred
Что значит отобрать? Тебе надо получить новую таблица? Автофильтр не устроит?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Дайте рабоч ссылку плзз на MultiSet (1.9 и более) с crack


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