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

» Excel VBA (часть 2)

Автор: strat
Дата сообщения: 08.05.2009 07:40
ebrr
а если убрать все запятые и потом просто разделить на 100?
Автор: ebrr
Дата сообщения: 08.05.2009 08:00
strat
Действительно, спасибо!
Автор: SAS888
Дата сообщения: 12.05.2009 04:34
Panajabi
Если решать задачу "в лоб", то так:

Код: Sub Main()
Dim i As Long, x As Range: Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Application.CountIf([A:A], Cells(i, "A")) > 1 Then If x Is Nothing Then Set x = Rows(i) Else Set x = Union(x, Rows(i))
Next
If Not x Is Nothing Then x.Delete
End Sub
Автор: 130635
Дата сообщения: 12.05.2009 07:30
Необходимо создать пользовательскую функцию, которая бы сортировала в алфавитном порядке содержимое (т.е., имеется последовательность букв, разд. пробелами F L R D S, нужно, чтобы они шли в алфавитном порядке D F L R S)
Автор: SAS888
Дата сообщения: 12.05.2009 09:32
130635

Цитата:
Необходимо создать пользовательскую функцию

Например, так:

Код: Function SortN(Cell As Range) As String
Dim i As Integer, j As Integer, a, x
a = Split(Cell, " ")
For i = LBound(a) To UBound(a) - 1
For j = i + 1 To UBound(a)
If a(i) > a(j) Then
x = a(i): a(i) = a(j): a(j) = x
End If
Next
Next
SortN = Join(a, " ")
End Function
Автор: 130635
Дата сообщения: 12.05.2009 11:04
Спасибо!
А как можно отобразить URL-адрес гиперссылки?
Автор: SAS888
Дата сообщения: 12.05.2009 12:24
Пусть ячейка "A1" содержит гиперссылку. Адрес можно получить так:

Код: MsgBox [A1].Hyperlinks(1).Address
Автор: 130635
Дата сообщения: 12.05.2009 13:20
А вот такая задача:
имеется 1й столбец с 100 ячеек, и 2й с 30 ячейками. В меньшем столбце данные, которые обязательно встречаются в большем. Нужна функция, которая бы ставила 1 напротив тех ячеек большего столбца, в которых встречается значение из 2го. Столбцы на разных страницах
Автор: Vitus_Bering
Дата сообщения: 12.05.2009 14:19
130635
Это можно сделать без макроса, как здесь.
Автор: 130635
Дата сообщения: 13.05.2009 07:22
это делается с помощью функции ВПР, нужно чтобы столбцы имели только уникальные записи. У меня же одна запись большего столбца может включать 2 записи второго столбца. Вот. Функцию я составила, но работает все это долго, потому что каждый раз приходится пробегать весь второй столбец. Может посоветуете, как бы это все упростить.
Автор: SAS888
Дата сообщения: 13.05.2009 07:48
130635

Цитата:
Функцию я составила, но работает все это долго, потому что каждый раз приходится пробегать весь второй столбец

И что? Просмотреть 30 ячеек, до первого совпадающего значения долго? Это сколько?
Автор: 130635
Дата сообщения: 13.05.2009 09:20
первый столбец 10000 ячеек, а второй 600 (условия немного изменились )
Автор: 130635
Дата сообщения: 13.05.2009 15:37
Посоветуйте хоть какой-нибудь вариант, pls! Просто я в этом деле новичок, и функция у меня страшненькая, и работает долго. Уверена, что вам приходилось уже встечаться с такими задачами.
Автор: SAS888
Дата сообщения: 14.05.2009 10:14
130635
Пусть на листе "Лист1" в столбце "A" находятся 10000 строк с какими-либо значениями, а на листе "Лист2" в столбце "A" находятся 600 строк с значениями.
Для того, чтобы в столбце "B" на листе "Лист1" проставить 1, если значение столбца "A" этой строки присутствует в столбце "A" листа "Лист2", то не нужно создавать свою функцию. Я бы сделал так:
В ячейку "B1" листа "Лист1" вводим формулу:

Код: =ЕСЛИ(ЕОШИБКА(ВПР(A1;Лист2!$A$1:$A$600;1;ЛОЖЬ));"";1)
Автор: 130635
Дата сообщения: 14.05.2009 10:56
затрудняет работу то, что в некоторых ячейках первого столбца может быть содержимое 2х ячеек второго ч/з пробел, так что здесь ВПР не поможет
Автор: SAS888
Дата сообщения: 14.05.2009 11:26
Тогда, может быть лучше сделать функцию (Split), которая будет находиться в дву скрытых столбцах и возвращать значения большого столбца до и после пробела соответственно. А затем, в столбец "B" вставить формулу, которая будет анализировать скрытые столбцы (в которых уже находится по 1 значению без всяких пробелов) с помощью функции ВПР.

P.S. Лучше задайте свой вопрос Здесь.
Автор: Interist
Дата сообщения: 16.05.2009 17:40
всем доброго времени суток, задали мне по информатике такое вот задание6 по ВБА, а я в нём почти нулячий, поэтому и прошу помощи у вас)

Задание: Записать в последовательность ячэек робочего илиста набор слов. получить новий набор слов в соответствие с вариантом(вывести те слова,в которых нету букви "м").Для решения задания использовать встроеные функции ВБА.
Результат решения розместить в соседней последовательносте ячэек робочего листа.

буду благодарен за помощь хоть който толчок в нужном направление, спасибо за внимание.
Автор: CEMEH
Дата сообщения: 17.05.2009 00:02
Interist
столбец А- исходные слова, В столбце В будут слова без m или M
A=100 ' количество слов в исходном столбце
for X=1 to A
B=0: C=0
on error resume next
B=Application.WorksheetFunction.Find("m",range("A" & X))
C=Application.WorksheetFunction.Find("M",range("A" & X))
on error goto 0
if A=0 and B=0 then Z=Z+1: range("B" & Z)=range("A" & X)
next X

код не ахти, но работать будет.

Добавлено:
130635
Ваш задача решается приблизительно таким же способом.
Автор: Interist
Дата сообщения: 17.05.2009 14:39
CEMEH


Цитата:
Interist
столбец А- исходные слова, В столбце В будут слова без m или M
A=100 ' количество слов в исходном столбце
for X=1 to A
B=0: C=0
on error resume next
B=Application.WorksheetFunction.Find("m",range("A" & X))
C=Application.WorksheetFunction.Find("M",range("A" & X))
on error goto 0
if A=0 and B=0 then Z=Z+1: range("B" & Z)=range("A" & X)
next X

код не ахти, но работать будет.


СПС за помощь

Добавлено:
еще вопросик- как в ВБА обозначаются все символы или все цифры???
Автор: CEMEH
Дата сообщения: 17.05.2009 22:05

Цитата:
как в ВБА обозначаются все символы или все цифры???

Не вкурил вопрос. Если это по теме:

Цитата:
B=Application.WorksheetFunction.Find("m",range("A" & X))
C=Application.WorksheetFunction.Find("M",range("A" & X))

жирным выделено то, что искать. Две строки чтобы находить букву при разных регистрах (маленькую иль большую)

Автор: Interist
Дата сообщения: 18.05.2009 01:03
не не не, не это, с этим кодом все понятно, эт вопрос в общем, я даж не наю как объяснить, ну припустим таже задача ток место исключения "М" нам надо исключить все символы, как такое осуществить, подскажыте пожалуйста.
Автор: crotoff
Дата сообщения: 18.05.2009 07:41
Interist
есть такая функция CHAR() - возвращает символ взависимости от кода, который в скобках
ещё есть CODE() - возвращает код символа

Добавлено:
коды клавиатурных символов идут какбэ по порядку, то есть ты можешь задать нужный диапазон кодов и запустить сравнения в цикле
Автор: Interist
Дата сообщения: 18.05.2009 17:23
огромное спасибо)
Автор: TXP
Дата сообщения: 22.05.2009 12:37
Приветствую

Подскажите как реализовать следующие:
в ячейках R40 и S40 находятся данные которые равны, мне нужно что бы при нарушение равенства определенный диапазон ячеек (например а1:с1) менял цвет а при восстановление равенства цвет ячеек восстанавливался в исходный.
Автор: 130635
Дата сообщения: 22.05.2009 13:47
В столбце информация об организациях. В некоторых ячейках всречается, помимо общей информации, сайт данной фирмы (www.*.ru(*.сom, *.net etc.)). Требуется переместить название сайта в соседний столбец
Автор: filemoto
Дата сообщения: 23.05.2009 19:32
люди, такая задача, есть 2 колонки(аббревиатура и значение):
аббр    | значение
-------------------
x1    | Параметр1
x2    | Параметр2    
x3    | Второй параметр
x4    | Ещё что-то
...


теперь, где-то в таблице, когда я вписываю в определённое поле x3, то нужно чтобы значение это автоматически заменялось на "Второй параметр"


Подскажите как это сделать? Задолбался уже копировать постоянно из ячейки в ячейку.
Автор: earcher
Дата сообщения: 23.05.2009 19:59
Вот скрипт, http://slil.ru/27685747

Он должен работать как фильтр. Если посмотреть, там всё понятно.
В общих словах, он сравнивает инфу из первого и второго листа, и повторяющиеся строки пишет в листе 3, а не повторяющие в листе 4.

Лист 1
1111    1111
2222    2222
333    333
444    444
555    555

Лист 2
2222    2222
333    333
444    444


В листе 3 показывает:
2222    2222
333    333
444    444
2222    2222
333    333
444    444


То есть почему то два раза одно и тоже.

Как исправить?
Автор: real_knacker
Дата сообщения: 24.05.2009 20:24
Подскажите, пожалуйста, каким образом можно запросить у пользователя путь к файлу, чтобы он мог выбрать его через Проводник (Windows Explorer).

Предполагается, что перед выполнением макроса будет выводиться окно с настройками, среди них в т.ч. должна быть возможность выбрать путь к файлу, из которого программа будет брать данные в дальнейшем. Хотелось бы что-то типа кнопки "Обзор..." (Browse...), а рядом с ней поле для отображения выбранного пути + запись пути в переменную.

Ногами сильно не бейте, в программировании не силен никак =)
Автор: shark478Vagon
Дата сообщения: 25.05.2009 09:31
Помогите решить задачу...Дано 2 массива...Нужно построить график минимум-отклонений от заданных точек...Конечно же данные дам...ПЛЗ....=)
Автор: SashaAB
Дата сообщения: 25.05.2009 11:18
Добрый день, помогите разобраться.
Есть список ComboBox на листе1 с тремя значениями: Буклет, Листовка, Конверт.
При выборе одного из этих значениё должны добавляться еще семь ComboBox (их содержание и расположение зависит от значения первого)
Вот что получилось -- http://slil.ru/27690276
Но Excel 2007 постоянно падает... В тоже время 2003 всё нормально переваривает...
Всё писалось либо через запись макроса либо поиском в интернете, поэтому ногами не бейте)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


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