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

» Excel FAQ

Автор: Tropin
Дата сообщения: 31.01.2005 15:19
NecroHill
Примерно так же, как я писал макрос для tccb... Только посложнее чуть ;) а принцип тот же: цикл по строчкам и если есть новое поле (столбец), то оно добавляется в конец, а если нет - то складывается...
Автор: Solenaja
Дата сообщения: 31.01.2005 15:24
Tropin
На сколько я могу видеть - это в параметрах защиты ставится, но вопрос не в том
Мне нужно чтобы отдельные разные пользователи могли менять разные диапазоны ячеек.

Мне кажется что этого сделать нельзя.
Автор: Tropin
Дата сообщения: 31.01.2005 15:35
Solenaja

Цитата:
Мне кажется что этого сделать нельзя.

Мне тоже так кажется! просто нужно как-то пользователей к книге привязывать, а такого механизма как я понимаю нет и быть в принципе не должно...
Автор: Solenaja
Дата сообщения: 31.01.2005 15:45
Все с диапазонами и паролями для каждого пользователя у меня получилось.
Единственный момент остался раскраска ячеек, но по-моему здесь уже где-то пробигало сообщение, сейчас буду смотреть и искать.

Добавлено:
Tropin
В Разрешениях изменения диапазонов - есть кнопка Разрешения - Выбирается диапазон - ставим на него пароль - выбираем пользователя для которого разрешено/запрещено пользоваться ячейкой
Автор: Tropin
Дата сообщения: 31.01.2005 16:45
Solenaja

Цитата:
выбираем пользователя для которого разрешено/запрещено пользоваться ячейкой

А как быть, если я принес файл на другой компьютер??? где нет таких пользователей???
Автор: Jarad
Дата сообщения: 31.01.2005 17:08
Mushroomer Такое решение еще может покатить если данных мало...а когда их Н-колонок и М-столбцов нужно более конструктивное ...неужели только надо Васиком ковырять?.. что-то же в настройках должно быть..имхо..
Автор: Solenaja
Дата сообщения: 31.01.2005 22:01
Tropin
пока об этом не задумываюсь, но все же хотелось бы и так, хотя можно поставить один пас на все для тех кто не в сети и будет ему счастье
Автор: NecroHill
Дата сообщения: 01.02.2005 09:59
Tropin
упс. макросы.
я тут ни в зуб ногой...
не мог бы подсказать, дружище, с чем его есть?
я неделю над этой задачей бьюсь...
Автор: Zerguei
Дата сообщения: 01.02.2005 13:32
Уважаемые, прошу знатоков подсказать мне один простой вещь -)
Имею два файла Экселевских. В каждом из них имеется по таблице. Первые столбцы обеих таблиц в обоих файлах содержат одинаковые параметры, но расределение этих параметров в двух таблицах неодинаково.
Второй столбец таблицы первого файла пуст.
Во втором столбце таблицы второго файла прописаны различные значения параметров. Все выглядит примерно так:

1 файл:

_столбец_1_|_столбец_2_|
____abc____|______-____|
____khh____|______-____|
____mny___|______-_____|
____mnh___|______-_____|


2 файл:
_столбец_1_|_столбец_2_|
____mny___|____98,23__|
____abc____|_____0.67__|
____mnh___|____9834___|
____khh____|_____83____|


А теперь вопрос - как мне сделать так, чтобы программа искала во втором файле данные столбца 1, аналогичные параметрам столбца 1 первого файла и их значения из второго столбца присваивала бы аналогичным параметрам в первом файле во втором столбце таблицы?

Макросы? VB?
Автор: xcm
Дата сообщения: 01.02.2005 14:13
Zerguei
1. функция ВПР, вопрос в том как она будет работать с двумя файлами... Вероятно
придется сначала загрузить табличку в одну книгу.
2. макросом.
Автор: Zerguei
Дата сообщения: 01.02.2005 15:04
xcm
Спасибо. Это в русскоязычном Экселе? Что она представляет из себя в англоязычной версии?
Автор: xcm
Дата сообщения: 01.02.2005 16:14
Как она называется в англ. версии к сожалению не знаю но в мастере функций она идет в разделе Ссылки и Массивы.
Ищет значение в крайнем левом столбце таблицы и возвращает значение в той же строке из указанного столбца таблицы. Функция ВПР используется вместо функции ГПР, когда сравниваемые значения расположены в столбце слева от искомых данных.

Буква «В» в имени функции ВПР означает «вертикальный».

Синтаксис
ВПР(искомое_значение;таблица ;номер_столбца ;интервальный_просмотр)

Автор: Zerguei
Дата сообщения: 01.02.2005 17:10
xcm
Насколько я понимаю, в англоязычной версии это находится в разделе Lookup & Reference и называется VLOOKUP, но дело в том, что задав значение для поиска, таблицу, номер столбца и диапазон поиска по непонятному мне алгоритму оно находит строку, которая находится где-то посередине таблицы..

Разбираемся дальше, но за наводку спасибо!
Автор: Alexdon
Дата сообщения: 01.02.2005 17:25
Zerguei

Цитата:
по непонятному мне алгоритму оно находит строку, которая находится где-то посередине таблицы..


Параметр "интервальный_просмотр" должен быть False либо исходная таблица с параметрами должна быть отсортирована по возрастанию.
Автор: Zerguei
Дата сообщения: 01.02.2005 18:08
Alexdon
ЕСТЬ! ЗАРАБОТАЛО! СПАСИБО!
Автор: Geezer S
Дата сообщения: 02.02.2005 08:57
Zerguei
All, кому интересно
В стандартной поставке Экселя при установке по умолчанию есть такой файлик:

Цитата:
c:\Program Files\Microsoft Office\Office10\1049\FUNCS.XLS

Это хелп по всем функциям, причем названия даны и русские, и английские. Это особо полезно, когда в макросах используешь функции рабочего листа (типа with WorkSheetFunction ...). Как я уже выше писал, функции рабочего листа в VBE работают заметно быстрее, чем функции языка. Я это почувствовал при работе с большими массивами на слабой машине.

Кстати, в ВПР (VLOOKUP) последний параметр может быть и FALSE, и 0. А я еще часто использую конструкцию ИНДЕКС(... ПОИСКПОЗ ... ), это позволяет искать в случае, когда возвращаемое значение находится СЛЕВА от диапазона просмотра. Пример для массива из двух столбцов:

Код: =ИНДЕКС(A:B;ПОИСКПОЗ(C1;B:B;0);1)
Автор: Zerguei
Дата сообщения: 02.02.2005 09:09
Geezer S
Спасибо, очень интересено и подробно описал все, но дело в том, что у меня файла с описанием функций нет, как, впрочем нет и папки 1049, а есть только папка 1033, но в ней тоже нет ничего похожего.
Не уверен, но думаю, что это из-за того, что у меня английская версия Офиса ХР с 3 сервис паком.
Автор: bredonosec
Дата сообщения: 02.02.2005 09:16
Geezer S

Цитата:
В стандартной поставке Экселя при установке по умолчанию есть такой файлик:

Цитата:c:\Program Files\Microsoft Office\Office10\1049\FUNCS.XLS
В более ранних версиях - напр, офисе 97 путь такой:
Код: c:\Program Files\Microsoft Office\Office\FUNCS.XLS
Автор: Zerguei
Дата сообщения: 02.02.2005 09:56
bredonosec
Жмакнул, ниче нет -))))
Мож он другое название имеет какое, на досуге ручками поищу..
Автор: Geezer S
Дата сообщения: 02.02.2005 10:48
bredonosec
Никаких ссылок на него не видел, нашел случайно - поиском в папке MicroSoft Office по маске *.xl* - искал файлы настроек и надстроек.
Zerguei
Sorry, забыл упомянуть, что путь к файлу зависит от версии офиса. bredonosec совершенно прав, надо просто поискать в папке офиса по имени файла или по расширению (*.xls). У меня тоже английская версия XP с SP3, но еще и с русским интерфейсом.
Автор: bredonosec
Дата сообщения: 02.02.2005 10:52

Цитата:
Жмакнул, ниче нет -))))
Честно говоря. странно.. Может, конечно, и по-другому.
Вот, мой возьми, на случай если не найдешь.
http://s26.yousendit.com/d.aspx?id=0B8HS7VXYM18W3D9YYOFIL1PX5
)


Добавлено:
Geezer S

Цитата:
поиском в папке MicroSoft Office по маске *.xl* - искал файлы настроек и надстроек
Еще что-нить интересное не попадалось? ))
Автор: Geezer S
Дата сообщения: 02.02.2005 11:05
Zerguei
Или здесь: http://www.geezer-s.pisem.net/samples/funcs.zip

bredonosec

Цитата:
Честно говоря. странно.. Может, конечно, и по-другому.

Да нет, не странно: все дело в локализации - та самая папка 1049...


Цитата:
Еще что-нить интересное не попадалось? ))

Честно говоря, я плотно с Экселем не работаю уже больше 2 лет, так что все и не упомню. А вот по части книг - есть такой Джон Уокенбах, 2 его книги (они переведены) - "Библия пользователя Эксель" и "Программирование в VB для Эксель" (названия примерные) - это вещь! По первой я научился практически всему, что сейчас знаю, а вот вторую так и не купил (денег не было) - но отзывы о ней - весьма. Ну, есть еще англоязычный ресурс: http://www.mrexcel.com - там особенно интересно на форуме (Message Board) . Вот пока и все.
Автор: GregoryPek
Дата сообщения: 02.02.2005 20:25

Цитата:
есть такой Джон Уокенбах, 2 его книги (они переведены) - "Библия пользователя Эксель" и "Программирование в VB для Эксель"

Попытался найти элетронный вариант этих книг или подобных, не смог.
Автор: Zerguei
Дата сообщения: 03.02.2005 10:12
Всем спасибо за помощь, консультации и файлы с описаниями функций.
...
Автор: Tropin
Дата сообщения: 03.02.2005 12:03
NecroHill
ответ на пост
http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4495&start=740#9

Давай мыло, вышлю экселевский файл с этим макросом

Код: Sub table()
' Определимся с Листами
Set WS1 = Worksheets("Лист1")
Set WS2 = Worksheets("Лист2")

' Первая и последняя строчки в первой таблице
StartRow1 = 1
EndRow1 = 9

' Первый и последний столбец с данными первой таблицы
FirstCol1 = 4
LastCol1 = 6

' Первая и последняя строчки во второй таблице
StartRow2 = 11
EndRow2 = 19

' Первый и последний столбец с данными второй таблицы
FirstCol2 = 4
LastCol2 = 6

'--------------
Dim ColNum1(), ColNum2() As Integer
Dim ColNumSize1, ColNumSize2 As Integer
' номер последнего текущего столбца в третьей таблице
CLastCol = 1

ReDim ColNum1(LastCol1)
ReDim ColNum2(LastCol2)

' 0. Очищаем лист2
WS2.Cells.ClearContents
WS2.Cells(1, 1) = "CLOCK#"

' 1. Добавляем необходимые столбцы в третью таблицу
' Цикл по столбцам первой таблицы
For j = FirstCol1 To LastCol1
stroka = WS1.Cells(StartRow1, j)
Set C = WS2.Rows(1).Find(stroka, LookIn:=xlValues, LookAt:=xlWhole)
' Если столбец с таким номером не существует, то добавляем его
If C Is Nothing Then
CLastCol = CLastCol + 1
WS2.Cells(1, CLastCol) = stroka

ColNum1(j) = CLastCol
Else
ColNum1(j) = C.Column
End If
Next j

' Цикл по столбцам второй таблицы
For j = FirstCol2 To LastCol2
stroka = WS1.Cells(StartRow2, j)
Set C = WS2.Rows(1).Find(stroka, LookIn:=xlValues, LookAt:=xlWhole)
' Если столбец с таким номером не существует, то добавляем его
If C Is Nothing Then
CLastCol = CLastCol + 1
WS2.Cells(1, CLastCol) = stroka

ColNum2(j) = CLastCol
Else
ColNum2(j) = C.Column
End If
Next j

CLastRow = 1
' 2. Добавляем строчки в третью таблицу
' Цикл по строчкам первой таблицы
For i = StartRow1 + 1 To EndRow1
stroka = WS1.Cells(i, 2)
Set C = WS2.Columns(1).Find(stroka, LookIn:=xlValues, LookAt:=xlWhole)
' Если строки с таким номером еще нет, то создаем ее
If C Is Nothing Then
CLastRow = CLastRow + 1
WS2.Cells(CLastRow, 1) = stroka
CR = CLastRow
Else
CR = C.Row
End If
' CR - номер текущей строки

For j = FirstCol1 To LastCol1
WS2.Cells(CR, ColNum1(j)) = WS2.Cells(CR, ColNum1(j)) + WS1.Cells(i, j)
Next j
Next i

' Цикл по строчкам второй таблицы
For i = StartRow2 + 1 To EndRow2
stroka = WS1.Cells(i, 2)
Set C = WS2.Columns(1).Find(stroka, LookIn:=xlValues, LookAt:=xlWhole)
' Если строки с таким номером еще нет, то создаем ее
If C Is Nothing Then
CLastRow = CLastRow + 1
WS2.Cells(CLastRow, 1) = stroka
CR = CLastRow
Else
CR = C.Row
End If
' CR - номер текущей строки

For j = FirstCol2 To LastCol2
WS2.Cells(CR, ColNum2(j)) = WS2.Cells(CR, ColNum2(j)) + WS1.Cells(i, j)
Next j
Next i

End Sub
Автор: antonm80
Дата сообщения: 03.02.2005 13:01
подскажите пожалста, как сделать так, чтобы в каждой ячейке столбца я мог выбирать значение этой ячейки из выпадающего списка... у меня несколько вариантов заполнения этой ячейки, а вручную все время писать нереально...

СПАСИБО!!!
Автор: xcm
Дата сообщения: 03.02.2005 13:11
antonm80
иди на 36 стр топика ,там я уже получил ответ на этот вопрос. Респект Mady
Автор: antonm80
Дата сообщения: 03.02.2005 13:37
КЛАСС!!!! ОХХХромное спасибо!!!!! просто счастье!
Автор: NecroHill
Дата сообщения: 03.02.2005 20:31
Tropin
волшебник!
респект и спасибо за потраченное время!

буду разбирараться с макросами. вроде все просто. когда разжуют на примере )

еще раз спасибо!
мыло в ПМ
Автор: ScorpionS
Дата сообщения: 03.02.2005 22:21
Tropin, дружище, ты мне давал вот этот совет для вставки даты и времени в ячейку в соседнем столбце........

Цитата:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Cells(Target.Row, 2) = Date + Time
End If
End Sub

.....помнишь?
Хотел тебя спросить, а что нужно добавить (изменить) в этой записи, чтобы ячейка с этой самой датой и временем очищалась при очистке (Delete) ячейки с данными?
В таком виде этой записи при очистке (Delete) ячейки с данными в соседней ячейке также вставляется текущая дата и время, т.е. дата и время очистки (удаления) ячейки с данными. Буду очень признателен.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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