Настройка и работа с Excel

reesly

Местный
Регистрация
3 Сен 2005
Сообщения
33
Реакции
4
Credits
64
1. На другом листе (Лист2) делаешь табличку соответствий - 2 столбца : производитель и страна, заполняешь её;
2. в нужной таблице делаешь формулу - ВПР(А1;Лист2!$А$1:$B$4;2;0), где
*"А1" - ссылка на ячейку с производителем,
* "Лист2!$А$1:$B$4" - это таблица соответствий (доллары нужны, чтобы ссылки стали абсолютными - не менялись при размножении формулы),
* 2 - номер столбца подстановки (страна у нас во втором столбце)
* 0 - этот параметр тебе не нужен - просто пусть стоит 0
3. Размножаешь формулу до конца таблицы - и получаешь нужный результат
 
  • Like
Реакции: MIA_

MIA_

Местный
Регистрация
14 Мар 2005
Сообщения
71
Реакции
10
Credits
44
Как убрать пустые ячееки?

Как убрать пустые ячееки? (При переходе в конец по Ctrl+End).
Выделение и удаление не помогает, очистить содержимое тоже не помогает.

Заранее спсб.
 
K

Kolpak

Всем привет. Вопрос: имеется два столбца в них данные, в некоторых строках данные этих столбцов дублируются. Как мне получить общий столбец, но что бы данные не повторялись. Всем заранее спасибо за ответ.
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
to Kolpak

Красивый и быстрый способ!
Воспользуемся классом Dictionary для имитации множества.
Этот класс реализован в библиотеке Microsoft Scripting Runtime (scrrun.dll). Чтобы подключить эту библиотеку к проекту, лезем в References и ставим галку напротив "Microsoft Scripting Runtime".

Код:
'Процедура добавления информации из заданного диапазона в множество
' (которое у нас эмулируется словарём)
Private Sub AddRangeToDic(AR As Range, AD As Scripting.Dictionary)
  Dim c As Range
  Dim st As String 
  For Each c In AR.Cells
    st = c.Text 'к строковому типу в данном случае приводить
                ' в принципе необязательно, всё равно потом будет тип Variant
    If Not AD.Exists(st) Then AD.Add st, 0
  Next
End Sub

'Тестовая процедура
' Печатает всё, что содержится в 10 строках первых двух столбцов
' в 3 столбце без повторений.
' Для прикола ещё и отсортируем :)
Public Sub test()
  Dim dic As Scripting.Dictionary
  Dim vv As Variant
  Dim i As Integer, k As Integer

  'Создаём словарь
  Set dic = New Scripting.Dictionary
  dic.CompareMode = TextCompare

  'Заполняем словарь
  AddRangeToDic ActiveSheet.Range("A1:A10"), dic
  AddRangeToDic ActiveSheet.Range("B1:B10"), dic
  
  'Выводим ключи словаря
  k = 1
  For Each vv In dic.Keys
    ActiveSheet.Cells(k, 3) = vv
    k = k + 1
  Next
  'Сортируем столбец
  With ActiveSheet.Sort
    .SetRange Range("C1:C20")
    .MatchCase = False
    .Orientation = xlTopToBottom
    .Apply
  End With
  
  'Убиваем словарь (правда здесь это лишнее :)
  Set dic = Nothing

End Sub

У меня все 65536 срок двух столбцов (если поменять "A1:A10" на "A:A" и "B1:B10" на "B:B" и "C1:C20" на "C:C") со случайными числами обрабатываются за 3,8 секунды!
 
K

Kolpak

to Kolpak

Красивый и быстрый способ!
Воспользуемся классом Dictionary для имитации множества.
Этот класс реализован в библиотеке Microsoft Scripting Runtime (scrrun.dll). Чтобы подключить эту библиотеку к проекту, лезем в References и ставим галку напротив "Microsoft Scripting Runtime".

!

Большое спасибо. Все работает на ура. Только вот сортировка выдает ошибку, я в программировании слаб, может подскажешь в чем проблема.
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
to Kolpak

У меня работало, но я тестил в 2007. Попробуй записать макрос на сортировку столбца ручками (начинаешь запись макроса, выделяешь столбец, нажимаешь кнопку "sort", заканчиваешь запись макроса) и посмотреть, в чём отличия.
 
K

Kolpak

to Kolpak

У меня работало, но я тестил в 2007. Попробуй записать макрос на сортировку столбца ручками (начинаешь запись макроса, выделяешь столбец, нажимаешь кнопку "sort", заканчиваешь запись макроса) и посмотреть, в чём отличия.
Сделал как ты сказал в 2003 офисе.
Все заработало. Вот что получилось.
PHP:
'Сортируем стобец
  Range("C1:C20").Select
  Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
  DataOption1:=xlSortNormal
 
L

Luj

Всем привет!

Проблемма такая: офис 2003
в общем то все работает на ура, и Формулы там и всякие проверки, но - вот интересное дело. в документе "весит он 2.7 Мб" есть одна страница, как только на нее переходишь, проц грузиться на 50%, при попытке перейти на другую строку или столбец зависания сукунд на 5, формула смешная в столбце и всего одна СУММ() проверил ее - правильная. Больше никаких формул ни объектов нету. при попытке скопировать только таблицу, висит минут 5 потом вставить на чистый документ тоже самое, но всетаки копируется. в новом документе проблемма не исчезает, те же самые тормоза. так же работает еще несколько документов. после чего это случилось, никто мне сказать не может :(
вроде как говорят что после того как эксель исправлял ошибки в файлах, какие ошибки и почему это случилось ,я, не знаю.
кто сталкивался, как решили!? пАмАгиииите. Док важный. как все изменить. объем сами понимаете большой, так бы заставил просто перенабрать.

З/Ы: спасибо за внимание.

вижу вы тут обширно обсуждаете, и решил именно поэтому спросить тут.
 
L

Luj

немного разобрался, но все же есть вопросы

оказывается, каким то макаром в некоторых документах прописался java script на обновление при изменении.
ясно удалил и все. а как можно его грохнуть сразу во всех файлах??
что-то не нашёл.:(
 

Jasur

Турист
Регистрация
2 Дек 2006
Сообщения
28
Реакции
2
Credits
42
Нужна помощь с работой массивом и базой данных на excel.
В excel имеются функции
ВПР(искомое_значение;таблица ;номер_столбца ;интервальный_просмотр)
и
ГПР(искомое_значение;таблица ;номер_строки;интервальный_просмотр)
Нужно объединить возможности обоих функций.

файл для примера Для просмотра ссылки Войди или Зарегистрируйся
 

MiceKholod

Турист
Регистрация
13 Май 2006
Сообщения
9
Реакции
1
Credits
12
кто нибудь сталкивался с такой проблемой в Excel 2007 : в любой ячейке умножаем 850 на 77,1 получаем 100000 , а должно 65563. все производные от этого числа нерабочие
в 2003 все нормально

нашел патч качаю Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
to MiceKholod

Неужели у кого-то ещё не стоит SP1?
Да, действительно у некоторых не стоит...
Но не проще ли SP1 поставить?
Он же автоапдейтом ставится с начала декабря...