IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Обсуждение программ (http://www.imho.ws/forumdisplay.php?f=3)
-   -   Microsoft Excel: Вопросы и ответы (http://www.imho.ws/showthread.php?t=26600)

Alex Dark 30.07.2008 14:43

earcher
Код:

Public Sub блабла()
  блабла2 1, 2, 5, True
  блабла2 2, 5, 6, False

End Sub


Public Sub блабла2(колонка1, колонка2, колонка3, критерий)
  a = 1
  b = 1
  c = 1
  Do While Not IsEmpty(Cells(a, колонка1).Value)
    Поиск = False
    b = 1
    ЯА = Cells(a, колонка1).Value
    Do While Not IsEmpty(Cells(b, колонка2).Value)
      If UCase(ЯА) = UCase(Cells(b, колонка2).Value) Then
        Поиск = True
        If критерий Then
          Cells(c, колонка3).Value = ЯА
          c = c + 1
        Else
          Exit Do
        End If
         
        Exit Do
      Else
        b = b + 1
      End If
    Loop
    a = a + 1
    If (Not Поиск) And (Not критерий) Then
      Cells(c, колонка3).Value = ЯА
      c = c + 1
    End If
  Loop
 
End Sub

не проверял, но предложенный тобой пример перелопатила

добавлено через 1 минуту
V0land, :biggrin: может он тупых зверей обучает грамоте.
Да и фильтром пырцать туда сюда нудно

earcher 30.07.2008 15:36

Чёта не разберусь куда этот код сувать)
можешь залить готовый xls?

Alex Dark 30.07.2008 15:54

Вложений: 1
Сервис, макрос, редактор VB
insert, module
вот тут и сувай :biggrin:

если не получится...

earcher 30.07.2008 16:55

Alex Dark
Вроде пашит, спасибо.



Что то я в экселе не пойму, хочу вставить текст в 300000 строк. Он записывает только 65535 но в ошибке пишет что максимальное количество строк 1 миллион с чем то. Тестил на офисе 2007 (2003 просто ошибку выдаёт и тоже записывать только 65k строк).
Можно как нибуть 300000 строк в экселе запостить?

V0land 30.07.2008 16:59

earcher,
насколько я знаю - нет, нельзя.
спамер детектед? :contract:

earcher 30.07.2008 17:37

это от спам баз сделали такое ограничение?)

Alex Dark 30.07.2008 18:11

earcher, у него только 65536 строк.
Хочешь больше - пользуй access

earcher 31.07.2008 16:59

В 2003 офисе и в access`е 65536 строк.

И потом все эти скрипты для экселя наверно не пойдут для акцеса?

korotetsky 31.07.2008 18:09

Цитата:

Сообщение от earcher (Сообщение 1577251)
Он записывает только 65535 но в ошибке пишет что максимальное количество строк 1 миллион с чем то

2007-й вставляет 65 тыщ, а правильно понял?

earcher 31.07.2008 19:10

Странный вопрос. Что непонятного? Всё по-русски написано:

Цитата:

хочу вставить текст в 300000 строк. Он записывает только 65535 но в ошибке пишет что максимальное количество строк 1 миллион с чем то. Тестил на офисе 2007 (2003 просто ошибку выдаёт и тоже записывать только 65k строк).

eap 01.08.2008 11:24

Ты так, из любопытства, не посмотрел, есть ли строки в листе Exel после 65535-й?
Если вопрос звучит как
Цитата:

Сообщение от earcher (Сообщение 1577761)
хочу вставить текст в 300000 строк.

то ответ: "Хоти дальше".
Если сформулируешь вопрос по-другому - Каких строк? Зачем? Что с ними делать? - то умные люди может что и посоветуют. На листе еще и столбцы есть, и лист в книге не один.

Alex Dark 01.08.2008 12:38

Цитата:

Сообщение от earcher (Сообщение 1577719)
И потом все эти скрипты для экселя наверно не пойдут для акцеса?

Вобщем то да, но алгоритм не меняетсмя, меняется способ доступа к данным
В акцесе даже проще. Это все же БД, а не универсальная программулина, которая ка бы ни была хороша, все таки электронная таблица, а по простому хренова куча ячеек, каждая из которых (по определению) большой инженерный калькулятор

добавлено через 9 минут
Цитата:

Сообщение от eap (Сообщение 1577959)
то умные люди может что и посоветуют. На листе еще и столбцы есть, и лист в книге не один.

ты совершенно прав, таблицу можно "попилить" на листы или на колонки. Только гемору будет. Я бы не взялся за раскладку БД в 300000 строк (а это всетаки БД) на листочки потому, что могут возникнуть следующие проблеммы:
а) добавление строк
б) поиск
в) сортировка
г) математические операции

korotetsky 01.08.2008 14:01

Цитата:

Сообщение от earcher (Сообщение 1577761)
Странный вопрос. Что непонятного? Всё по-русски написано

вопрос все-таки сформулировать по-людски стоит, если ждешь нормального ответа ;)

какой текст надо вставить?
откуда этот текст?
в какой наконец эксель вставить - 3-й или 7-й?

ибо так действительно, кроме
Цитата:

Сообщение от eap (Сообщение 1577959)
ответ: "Хоти дальше".

ничего не услышишь.

все-таки нужен перевод с русского на русский. и с какого это перепугу 2007-й эксель на вставляет больше 65-и тысяч, обьясните мне. их по определению в нем миллион, и уже миллион раз это все обмусолено.

по работе 150 тысяч гоняется в нем, из текстовика вываленого 6-й 1с втягивается без разговоров. к тому же с учетом мусора количество ячеек увеличивается под 300.

earcher 02.08.2008 13:47

korotetsky
Цитата:

и с какого это перепугу 2007-й эксель на вставляет больше 65-и тысяч, обьясните мне. их по определению в нем миллион
Киньте сюда .xls с 300000 строк в 1 листе. С любым содержанием.

Cartman 02.08.2008 15:01

Цитата:

Сообщение от earcher (Сообщение 1578241)
Киньте сюда .xls с 300000 строк в 1 листе.

А ты знаешь, korotetsky ведь прав. Если открываешь старую книгу (т.е. созданную в 2003 офисе) то строк 65k. А если создать новую - то строк там мильен. Но сохранять ее, опять же, нужно в новом формате. Старый и имеет это ограничение.

UmNic 02.08.2008 18:32

Цитата:

Сообщение от Cartman (Сообщение 1578261)
Если открываешь старую книгу (т.е. созданную в 2003 офисе) то строк 65k. А если создать новую - то строк там мильен. Но сохранять ее, опять же, нужно в новом формате. Старый и имеет это ограничение.

Если открывать файл формата офиса 2003 офисом 2007, то вообще включается "режим ограниченной функциональности", в котором много ограничений (не только на число строк). Аналогично, при сохранении в фомате 2003. Только если сохранить (или создать) файл в формате 2007, то после этого будет возможность использовать все возможности офиса 2007.

cheerio 02.08.2008 19:05

Забыл как это делается...
МS Excel 2003.
Есть ячейка с формулой. Как посмотреть - от каких ячеек зависит данная ячейка с формулой?
И наоборот, на какие ячейки влияет данная ячейка?
По моему, что-такое было... В инструментах, что ли... :confused:

Cartman 02.08.2008 19:22

Цитата:

Сообщение от cheerio (Сообщение 1578338)
от каких ячеек зависит данная ячейка с формулой

При начале редактирования ячейки с формулой (например по кнопке F2) Excel подсвечивает связанные ячейки.
Цитата:

Сообщение от cheerio (Сообщение 1578338)
на какие ячейки влияет данная ячейка

А вот это врят ли.

V0land 02.08.2008 19:52

cheerio,
Цитата:

И наоборот, на какие ячейки влияет данная ячейка?
tools - formula auditing - trace dependents
где в 2007 - хз

ps. в 2007 такая кнопка находится на вкладке formulas

earcher 02.08.2008 22:58

Cartman
Цитата:

Если открываешь старую книгу (т.е. созданную в 2003 офисе) то строк 65k. А если создать новую - то строк там мильен.
Во, точно.

[QUOTE]Но сохранять ее, опять же, нужно в новом формате. Старый и имеет это ограничение.[QUOTE]
Новый я так понял ты имеешь ввиду .xlsx ?


А макросы для 2003 работают для 2007?

В частности интересует вот этот http://www.imho.ws/showthread.php?p=1577168#post1577168

Спасибо

korotetsky 04.08.2008 12:01

о зависимостях тут.

отут важное:
Цитата:

Сообщение от UmNic (Сообщение 1578319)
Если открывать файл формата офиса 2003 офисом 2007, то вообще включается "режим ограниченной функциональности", в котором много ограничений (не только на число строк). Аналогично, при сохранении в фомате 2003. Только если сохранить (или создать) файл в формате 2007, то после этого будет возможность использовать все возможности офиса 2007.

при сохранении в старом формате все что более 65 тыщ строк будет просто обкусываться. если надо больше и надо в экселе - следует пользовать 2007-й эксель. больше вариантов нет.

Judge 10.08.2008 16:56

1. Задачка на создание сводной таблицы. Имхо, требуется макрос.

2. Никак не могу разобраться, как на Панель (Excel 2007) вывести Кнопку и привязать к ней макрос. На листе получается Кнопку сделать, а на Панели...

3. Если установить два офиса - 2003 и 2007 - они не будут конфликтовать?

Alex Dark 10.08.2008 21:07

Цитата:

Сообщение от Judge (Сообщение 1580146)
1. Задачка на создание сводной таблицы. Имхо, требуется макрос.

Вобщем то макрос (вроде) простой. Завтра (в понедельник) накорябаю (если будет возможность).
Но imho эта задачка решается в access намного проще.

Judge 10.08.2008 23:39

Alex Dark,
1. если это упростит создание макроса, то на листе Список справа от столбца AN можно вставить пустой столбец;
2. можно сделать макрос только для одной группы: я потом на листе сделаю Кнопки для каждой группы, а макрос подредактирую.
Цитата:

Сообщение от Alex Dark (Сообщение 1580181)
Но imho эта задачка решается в access намного проще.

Я только начал с Excel разбираться, а ты мне уже Access рекомендуешь. Что я тебе сделал плохого? http://www.kolobok.us/smiles/standart/meeting.gif

Alex Dark 11.08.2008 14:57

Цитата:

Сообщение от Judge (Сообщение 1580231)
1. если это упростит создание макроса, то на листе Список справа от столбца AN можно вставить пустой столбец;

Зачем???
я добавил 2 колонки, но только для проверки.

Цитата:

Сообщение от Judge (Сообщение 1580231)
2. можно сделать макрос только для одной группы: я потом на листе сделаю Кнопки для каждой группы, а макрос подредактирую.

Может я что то не допонял... Я не обнаружил группы. Или что под ними понималось

Короче. Сляпал второпях и как понял задачу. Проверил. Вроде работает. Пускай макрос и жди.

1. Лист с результатом перед началом надо очистить
2. У тебя на исходном листе куча скрытых строк. Они то же обрабатываются



Цитата:

Сообщение от Judge (Сообщение 1580231)
Я только начал с Excel разбираться, а ты мне уже Access рекомендуешь. Что я тебе сделал плохого?

Все что в жизне у меня есть плохого все из-за тебя...
(щютка ... :biggrin:)

Alex Dark 11.08.2008 17:09

Вложений: 1
Машина глюканула на работе.
Поэтому с небольшим опозданием

Judge 12.08.2008 00:55

Вложений: 1
Цитата:

Сообщение от Alex Dark (Сообщение 1580338)
Сляпал второпях и как понял задачу

Хотя задачу понял правильно, но очень заметно, что "сляпал второпях". http://i.smiles2k.net/aiwan_smiles/grin.gif
1. Таблица выглядела бы гламурнее http://smiles.server.vstre4a.info/0d...5b3f434df8.gif, если бы клубы (нечаянно назвал их группами) были расположены по алфавиту, как это было на моём листе. Если нет, то по фиг!
2. Ошибочки бы убрать (я в таблице в скобках указал расхождения в подсчёте).
Цитата:

Сообщение от Alex Dark (Сообщение 1580338)
я добавил 2 колонки, но только для проверки.

3. Эти колонки должны присутствовать в таблице или их можно убрать насовсем?
Цитата:

Сообщение от Alex Dark (Сообщение 1580338)
У тебя на исходном листе куча скрытых строк.

Хде?! http://woweb.ucoz.ru/flist/sml/525/22.gif Выделил 290 строк, нажал Отобразить: ни одной строки не добавилось. http://www.kolobok.us/smiles/standart/meeting.gif

Alex Dark 12.08.2008 09:45

1 Гламур проще сделать руками
2 Ошибочек нет. У тебя пустые поля "Клуб". Они вносят неразбериху. Но вобщем ты прав, учел вариант пустого поля "Клуб"
3 можкшь убрать. Я их вывел только для проверки

Скрытых строк нет. Ошибся. Но как практика показывает, скрытые строки дают большую погрешность.

Замени
Код:

Sub Итоги()
    Dim МояСтрока1, МояСтрока2
    Sheets("Ступени").Select
    МояСтрока1 = 3
    Do While (Not IsEmpty(Sheets("Список").Cells(МояСтрока1, 2)))
        МояСтрока2 = 5
        НеНашли = True
        Do While (Not IsEmpty(Sheets("Ступени").Cells(МояСтрока2, 6)))
            If Sheets("Список").Cells(МояСтрока1, 3).Value = Sheets("Ступени").Cells(МояСтрока2, 3).Value Then
               
                If IsNumeric(Sheets("Список").Cells(МояСтрока1, 38)) Then
                    If Sheets("Список").Cells(МояСтрока1, 38).Value <= 9 Then
                        '  бронза
                        Sheets("Ступени").Cells(МояСтрока2, 7) = Sheets("Ступени").Cells(МояСтрока2, 7).Value + 1
                   
                    ElseIf Sheets("Список").Cells(МояСтрока1, 38).Value <= 13 Then
                        '  Серебро
                        Sheets("Ступени").Cells(МояСтрока2 + 1, 7) = Sheets("Ступени").Cells(МояСтрока2 + 1, 7).Value + 1
                    ElseIf Sheets("Список").Cells(МояСтрока1, 38).Value <= 15 Then
                        '  Золото
                        If МояСтрока2 = 35 Then
                        a1 = 1
                        End If
                        Sheets("Ступени").Cells(МояСтрока2 + 2, 7) = Sheets("Ступени").Cells(МояСтрока2 + 2, 7).Value + 1
                    Else
' Эту строку можно заремарить, Она считает в дополнительной колонки "неувязки"
Sheets("Ступени").Cells(МояСтрока2 + 2, 8) = Sheets("Ступени").Cells(МояСтрока2 + 2, 8).Value + 1
                    End If
                Else
' Эту строку можно заремарить, Она считает в дополнительной колонки "неувязки"
Sheets("Ступени").Cells(МояСтрока2 + 2, 8) = Sheets("Ступени").Cells(МояСтрока2 + 2, 8).Value + 1
                End If
                '  нашли
                НеНашли = False
            End If
           
            МояСтрока2 = МояСтрока2 + 3
        Loop
        If НеНашли Then
            'Sheets("Ступени").Select
            Sheets("Ступени").Range(Sheets("Ступени").Cells(МояСтрока2, 3), Sheets("Ступени").Cells(МояСтрока2 + 2, 3 + 2)).Select
            Selection.Merge

            '  Далее форматирование вновь созданной ячейки. Я поставил обход. Так быстрее
            GoTo mmm
            With Selection
                .HorizontalAlignment = xlLeft
                .VerticalAlignment = xlCenter
                .WrapText = False
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = True
            End With
mmm:
            Sheets("Ступени").Cells(МояСтрока2, 3).Value = Sheets("Список").Cells(МояСтрока1, 3).Value
            Sheets("Ступени").Cells(МояСтрока2, 6).Value = "Бронза"
            Sheets("Ступени").Cells(МояСтрока2 + 1, 6).Value = "Серебро"
            Sheets("Ступени").Cells(МояСтрока2 + 2, 6).Value = "Золото"
           
            If IsNumeric(Sheets("Список").Cells(МояСтрока1, 38)) Then
                If Sheets("Список").Cells(МояСтрока1, 38).Value <= 9 Then
                    '  бронза
                    Sheets("Ступени").Cells(МояСтрока2, 7) = Sheets("Ступени").Cells(МояСтрока2, 7).Value + 1
               
                ElseIf Sheets("Список").Cells(МояСтрока1, 38).Value <= 13 Then
                    '  Серебро
                    Sheets("Ступени").Cells(МояСтрока2 + 1, 7) = Sheets("Ступени").Cells(МояСтрока2 + 1, 7).Value + 1
                ElseIf Sheets("Список").Cells(МояСтрока1, 38).Value <= 15 Then
                    '  Золото
                    Sheets("Ступени").Cells(МояСтрока2 + 2, 7) = Sheets("Ступени").Cells(МояСтрока2 + 2, 7).Value + 1
                Else
' Эту строку можно заремарить, Она считает в дополнительной колонки "неувязки"
Sheets("Ступени").Cells(МояСтрока2 + 2, 8) = Sheets("Ступени").Cells(МояСтрока2 + 2, 8).Value + 1
                End If
            Else
' Эту строку можно заремарить, Она считает в дополнительной колонки "неувязки"
Sheets("Ступени").Cells(МояСтрока2 + 2, 8) = Sheets("Ступени").Cells(МояСтрока2 + 2, 8).Value + 1
            End If
            'Sheets("Список").Select
            МояСтрока2 = МояСтрока2 + 3
           
        End If
        МояСтрока1 = МояСтрока1 + 1
    Loop
           
    Sheets("Список").Select
End Sub


Snak 21.08.2008 11:16

Здравствуйте!

Мне необходимо в Excel`е сравнить числовые значения 2-х столбцов на наличие совпадений/несовпадений, причем размеры их не совпадают (1 столбец содержит больше ячеек с информацией)

Как сделать это в пределах 1 листа (2 таблицы на 1 листе) и в пределах 2-х листов одной книги (сравнение 1 столбца 1-ого листа с 1-ым столбцом 2-ого листа)?

В Excel`е я не спец и не умею пользоваться макросами, поясните пожалуйста по-подробнее.

Alex Dark 21.08.2008 14:58

Цитата:

Сообщение от Snak (Сообщение 1582958)
поясните пожалуйста по-подробнее.

Отлистани 20-30 сообщений назад и найдешь решение своей задачи

Цитата:

Сообщение от Snak (Сообщение 1582958)
я не спец и не умею пользоваться макросами, поясните пожалуйста по-подробнее.

Тяжело объяснять принципы программирования

Snak 21.08.2008 16:46

Цитата:

Сообщение от Alex Dark (Сообщение 1583027)
Отлистани 20-30 сообщений назад и найдешь решение своей задачи

Вот я что-то не нашел..

Цитата:

Сообщение от Alex Dark (Сообщение 1583027)
Тяжело объяснять принципы программирования

Жаль..

--------------

Я провел некие эксперименты и вот что получается:

У меня все выходит на примере сходимости 1 к 1 т.е. если значения одинаковые (на 1 листе) стоят друг на против друга
=ЕСЛИ(ЕНД(ВПР(A1;B1:B5;2;0));"Не входит";"Входит")

Когда значения стоят не точно на против друг-друга, то результат отображается некорректно.

К примеру:

1 25 Не входит
2 55 Входит
23 56 Не входит
55 2 Не входит

Если отсортировать по-возрастанию, то

1 2 Не входит
2 25 Не входит
23 55 Не входит
55 56 Не входит

Ввел следующем образом формулу
=ВПР(A1;B:B;1;0)

1 0 #Н/Д
2 2 2
10 3 #Н/Д
23 4 #Н/Д
55 25 55
99 55 #Н/Д
100 56 #Н/Д
57 #Н/Д
58 #Н/Д
59 #Н/Д

появился вопрос:
1) Почему если указать Номер_индекса_столбца "2" (который включен в массив и по нему ведется поиск как требует ВПР), ничего не получится?
2) Если указать Диапазон просмотра "1" - ИСТИНА, то он не ищет "точно", а "0"- ЛОЖЬ (приближенно), то все выходит как надо?

Alex Dark 22.08.2008 11:39

Вложений: 1
Была задача: две колонки получить третью в которой только совпадающие данные
Это решалось при помощи макроса

Вот чей то пример решения проблеммы без макроса. Нашел у себя в компе.
Пример решающий проблему макросом наверное дома

Alex Dark 24.08.2008 09:02

Snak, начни читать отсюда imho.ws/showthread.php?p=1577059#post1577059

Jeff 31.08.2008 14:58

Вопрос по хоткеям (hotkeys) в английском 2007 экселе.

F1 мне ничего не нашёл, поэтому спрашиваю тут:
Есть ли хоткей для заливки ячеек? То есть я выбрал мышкой некий диапазон и хочу сделать заливку заранее выбранным цветом, можно ли это как-то с клавы сделать?

UmNic 31.08.2008 16:09

Цитата:

Сообщение от Jeff (Сообщение 1585475)
Есть ли хоткей для заливки ячеек?

Насколько понимаю, нет. Можно самому записать соответствующий макрос и назначить ему клавишу.

Jeff 31.08.2008 18:16

Цитата:

Сообщение от UmNic (Сообщение 1585486)
Можно самому записать соответствующий макрос и назначить ему клавишу.

Если можно, то объясни как это сделать :) Чем подробнее, тем лучше. Офис - английский

Alex Dark 31.08.2008 19:42

Цитата:

Sub Макрос1()
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
Это зальет выделенные ячейки желтым цветом
Назначь макросу hotkey и наслаждайся.

Можно поступить наоборот
1 выделил ячейки
2 Сервис,макросы, начать запись
3 В диалоге назначил клавишу
4 Выполнил заливку (у тебя при этом записываются твои команды, не делай ни чего лишнего)
5 Останови запись

Judge 02.09.2008 01:23

Вложений: 1
"Неудачная особенность" условного форматирования (файл создан в 2003-м, а особенность проявляется, если его открыть в 2007-м):
если к ячейке применить условное форматирование - при значении равном 0 (ноль), шрифт белый,- то при введении в ячейку цифр, они становятся видны только после перевода курсора на другую ячейку. А в 2003-м видны сразу при введении.
Не знаю, понятно ли изложил; прицепил для наглядности файл.

Alex Dark 03.09.2008 18:49

Judge, у меня нет 2007, но мне кажеться ч тебя понял. При наборе значения, его не видно, так?
Похоже что это "особенность" Мирись с неудобством и :biggrin: будь горд за то что у тебя такой крутой офис
Я несколько раз пробовал на нем. Терпения не хватило. Уж лучше на 97. Хотя возможно что я и не прав....

Judge 04.09.2008 04:03

Цитата:

Сообщение от Alex Dark (Сообщение 1586415)
При наборе значения, его не видно, так?

Совершенно верно! Кстати, если сделать так же сразу в 2007-м, то та же фигня получается.
Цитата:

Сообщение от Alex Dark (Сообщение 1586415)
Похоже что это "особенность"

Похоже, что так. Неудобно очень да и странная эта "особенность".
Цитата:

Сообщение от Alex Dark (Сообщение 1586415)
будь горд за то что у тебя такой крутой офис

Неее! Я хитрый: я пользую 2003-й! Всё, что делаю в 2003-м переношу на другую винду, где стоИт 2007-й и там уже смотрю на результаты и сравниваю. Так что, на 2007-й пока не перешёл.
Цитата:

Сообщение от Alex Dark (Сообщение 1586415)
Уж лучше на 97

Не зарекайся! Ещё совсем недавно иметь Win 98 было круто! http://i.smiles2k.net/aiwan_smiles/grin.gif


Часовой пояс GMT +4, время: 00:21.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.