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

» Excel VBA (часть 3)

Автор: DJMC
Дата сообщения: 04.02.2016 12:52
Alexzzy
каким?
Автор: KDPoid
Дата сообщения: 04.02.2016 19:35
DJMC,
Задачка выглядит простой. Как вы собираетесь узнавать о "полностью противоположных" строках? Похоже, их у вас много, когда макрос находит пару, что он должен сделать ?
Автор: DJMC
Дата сообщения: 05.02.2016 08:59
KDPoid
у меня строки с 500 по 1280.... и я знаю в каком порядке заполнены цифры в них от одного до трех, мне нужно найти и исключить все противоположные строки, условие что они не могут повторятся, то есть при встрече строка должна удалятся, цель сократить до минимуму список строк.
Автор: KDPoid
Дата сообщения: 07.02.2016 12:28
Может страничку куда-нибудь выложить ?
А пока на пальцах...
Когда две строки полностью не совпадают, удалять надо только вторую ?

Говорим о порядковых номерах строк:
Строка 503 полностью не совпадает с 500 и 510
У 500 и 510 есть одинаковые значения.
Какую удалять ?

И тот же вопрос, когда 500 и 503 разные, а 503 и 510 - частично совпадают.
Автор: DJMC
Дата сообщения: 10.02.2016 16:49
KDPoid

Цитата:
Может страничку куда-нибудь выложить ?

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



Цитата:
Говорим о порядковых номерах строк:
Строка 503 полностью не совпадает с 500 и 510
У 500 и 510 есть одинаковые значения.
Какую удалять ?

все три убирать.


Цитата:
И тот же вопрос, когда 500 и 503 разные, а 503 и 510 - частично совпадают.

чтобы можно было задать удалять при n (где есть возможность самому указать число) совпадениях.
Автор: KDPoid
Дата сообщения: 10.02.2016 20:49

Цитата:
можно, но там запутаешься еще больше...
говори куда, сделаю.

Куда угодно. Гуглодрайв, яндексдиск, мега...
По крайней мере, можно будет не о абстрактных строках разговаривать а на конкретном примере попытаться понять.


Цитата:

Цитата:
Говорим о порядковых номерах строк:  
Строка 503 полностью не совпадает с 500 и 510  
У 500 и 510 есть одинаковые значения.  
Какую удалять ?  

все три убирать.
Автор: Alexzzy
Дата сообщения: 10.02.2016 23:16
KDPoid

Цитата:
Звучит странно...

Ну так изначально идет корявое описание, что даже просто читать трудно...
Автор: DJMC
Дата сообщения: 11.02.2016 10:58
KDPoid
http://my-files.ru/555586
в файле три странице, первая эта та откуда нужно убирать, во второй статистика чтобы понять что убирать, в третьей уже убранные строки и что чему противоположно...

то есть получается так...

244    507    684            
245    701    755    839    966    215
246    897    996    41        
247    511    749    
248    644    146            
249    615    741            
Автор: KDPoid
Дата сообщения: 11.02.2016 11:54
Смотрю файл.
Лист "Обратки"
Строка 27.
Там написано, что тираж 250 противоположен тиражу 651 ?
Иду на лист "Строки 2", это же статистика, чтобы понять что убирать...
Сравниваю тиражи 250 и 651. Строки 54 и 586 соответственно.
Их значения совпадают в столбцах B, J, N, P

Тогда что такое "противоположные строки" ?


Автор: DJMC
Дата сообщения: 11.02.2016 12:58
KDPoid
ну просто противоположность везде разная.

Даже не знаю как понятнее объяснить,
[more=Пример..] берем строку 271
зная что в ней такой расклад:
1-2
2-1
3-3
4-3
5-1
6-3
7-2
8-3
9-3
10-3
11-3
12-2
13-2
14-1
15-3

находим максимально противоположные строки,получается 708 и 191
в 708 получается строка
1-1
2-3
3-1
4-2
5-2
6-1
7-3
8-1
9-1
10-1
11-1
12-3
13-3
14-3
15-1

в 191 получается
1-3
2-2
3-2
4-2
5-2
6-2
7-3
8-1
9-2
10-1
11-1
12-1
13-3
14-3
15-2

И на основе этого получается что в 271 строке будет
1-2
2-1
3-3
4-1 или 3
5-1 или 3
6-3
7-1 или 2
8-2 или 3
9-3
10-2 или 3
11-2 или 3
12-2
13-1 или 2
14-1 или 2
15-3

вот как то так...
[/more]

Автор: KDPoid
Дата сообщения: 12.02.2016 07:15
Вот с самого начала...

Цитата:
берем строку 271  
зная что в ней такой расклад:
1-2...

Я ничего не знаю в вашей предметной области. "Напряжённый пневмоторакс" мне больше информации несёт, чем "расклад 1-2"
В ячейках везде однозначные числа. Откуда я ещё должен знать пары каких-то раскладов... ?

Пожалуй, я сдаюсь.
Я не в состоянии понять, что такое "труднообъяснимая, везде разная, полная противоположность строк".
Автор: DJMC
Дата сообщения: 15.02.2016 09:30
KDPoid
да вроде все понятно объяснил, есть множество строк где идут цифры от 1 до 3 в разном порядке, нужно найти хотя бы на примере первых 10 строк цифры которые отличаются... то есть если в первой строчке цифра 1, то найти все строки где нет этой цифры, и так с 10 (хотя бы строчками)
Автор: KDPoid
Дата сообщения: 15.02.2016 20:09

Цитата:
да вроде все понятно объяснил

Думаете, я специально придуриваюсь, чтобы вас бесить ?

Основываясь на вашем файле, возвращаюсь к первому предположению: противоположные строки - это те, в которых не совпадают соответствующие значения в столбцах с "B" по "P" на листе "Строки 2".
Что делать с обнаруженным - так и не понятно, поэтому пока просто выписываю их на лист "обратки". Первый тираж в столбик G, обратные ему - правее. Выписываю только номера тиражей.


Код: Sub qweqwe()
cntR = 2
cntC = 1
For i = 27 To 100 ' Проверяем строки с 27-й по сотую.
If cntC > 1 Then cntR = cntR + 1
cntC = 1
For k = i + 1 To 100 ' ... по сотую. )
eq = False
For j = 1 To 15
If Sheets("Строки 2").Range(Chr(Asc("A") + j) + CStr(i)) = Sheets("Строки 2").Range(Chr(Asc("A") + j) + CStr(k)) Then
eq = True
Exit For
End If
Next j
If Not eq Then ' Если ни в одном столбце не совпало - выписываем.
If cntC = 1 Then Sheets("Обратки").Range("G" + CStr(cntR)) = Sheets("Строки 2").Range("A" + CStr(i))
Sheets("Обратки").Range(Chr(Asc("G") + cntC) + CStr(cntR)) = Sheets("Строки 2").Range("A" + CStr(k))
cntC = cntC + 1
End If
Next k
Next i
End Sub
Автор: DJMC
Дата сообщения: 16.02.2016 09:07
KDPoid
вот за это большое спасибо!!! последний вопрос куда это все вставить чтобы работало?
Автор: KDPoid
Дата сообщения: 16.02.2016 09:18
В макрос эксельного файла.
Вид - макросы.
Имя макроса указать qweqwe и "создать".
Откроется редактор с пустой процедурой qweqwe
Перенести туда содержимое из моего поста.
Убедиться, что русские названия листов (Строки 2, Обратки) перенеслись корректно.
Запускать: Вид - Макросы - Выполнить.
Автор: DJMC
Дата сообщения: 16.02.2016 12:46
KDPoid
а если выдает ошибку Run-time error 9

и как я понимаю ему что то тут не нравится...

If Sheets("Строки 2").Range(Chr(Asc("A") + j) + CStr(i)) = Sheets("Строки 2").Range(Chr(Asc("A") + j) + CStr(k)) Then

все сделал как ты сказал.
Автор: KDPoid
Дата сообщения: 16.02.2016 19:13
Вставил макрос в ваш файл.
_https_://mega.nz/#!oAgQTLJA!bpGe526FFrW8otuI3Iyb0rv_sB8kZU_xVr1vuIOveGA

Добавил проверку для случаев, когда строка противоположна большому числу других.
Выводится не более 19-ти первых обраток.
У меня ни каких ошибок нет.
Автор: DJMC
Дата сообщения: 17.02.2016 09:00
KDPoid
большое спасибо, скачал. Действительно ошибок нет, а теперь как правильно пользоваться?

Запускать: Вид - Макросы - Выполнить. делаю так на первом листе ничего не происходит...
Автор: KDPoid
Дата сообщения: 17.02.2016 10:30

Цитата:
...Что делать с обнаруженным - так и не понятно, поэтому пока просто выписываю их на лист "обратки". Первый тираж в столбик G, обратные ему - правее. Выписываю только номера тиражей...

На первом листе ничего и не меняется.
Найденное выписывается на третьем листе "Обратки".
Ответа, на "что делать с найденным?" я не видел.
Видел предположение "удалить всё найденное", но я думаю, что под это удаление попадут почти все строки.

P.S.
макрос ищет в строках с 27-й по 100-ю. Это прямо прошито в коде:

Цитата:
...
  For i = 27 To 100 ' Проверяем строки с 27-й по сотую.
...


Автор: DJMC
Дата сообщения: 17.02.2016 11:33
KDPoid
Все вот теперь разобрался, большое спасибо, очень помог мне.
Автор: Fsp050
Дата сообщения: 20.02.2016 12:51
Подскажите, пожалуйста макрос, который объединяет набор csv файлов в один файл.
Т.е. есть 1000 файлов csv(1,2,3...1000), их надо объединять в один. Там все столбцы одинаковые. Просто чтоб вручную не копипастить))
Автор: Antono89
Дата сообщения: 20.02.2016 22:57
Насколько я знаю, там можно хорошо ознакомиться с макросами, верно?
Автор: NJCorp
Дата сообщения: 23.02.2016 11:30
такая задачка:
есть 6 комбобоксов
ComboBox1, ComboBox2...
они заполнены

нужно при выборе значения в любом из комбобоксов все остальные очищались.
Автор: KDPoid
Дата сообщения: 23.02.2016 13:53
NJCorp
_https_://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.controls.combobox.aspx
Автор: Greg12
Дата сообщения: 02.03.2016 09:46
[more] День добрый.Вопрос по работе с массивами.Есть макросы на VBA.При запуске в Эксель 97 работает.При запуске в Эксель 2003 - ошибка № 10 This array is fixed or temporarily locked     Этот массив имеет фиксированную длину или он временно заблокирован .
Объявление массива в модуле:
'Option Base 0
Option Explicit
Public Type TObject
Name As String
x1 As Single
y1 As Single
x2 As Single
y2 As Single
Articul As String
papa As Integer
child(3) As Integer
price As Long 'Цена в центах
Pokras As Boolean ' Покраска
Color As String
End Type
Public objects() As TObject

В процедуре:
Public Sub Добавить_объект(Nom As Integer, n As String, x1 As Single, _
y1 As Single, x2 As Single, y2 As Single, a As String, _
p As Integer, ChildNom As Integer, Pokr As Boolean, C As String)

Dim SCE As Object
Application.DataEntryMode = xlOff
Set SCE = ActiveWorkbook.Sheets("EditSheet")


ReDim Preserve objects(Count), Cn(Count) "Здесь появляется ошибка"

objects(Nom).Name = n
objects(Nom).x1 = x1
[/more]
Автор: Maximus777
Дата сообщения: 11.03.2016 07:01

Цитата:
такая задачка:
есть 6 комбобоксов
ComboBox1, ComboBox2...
они заполнены

нужно при выборе значения в любом из комбобоксов все остальные очищались.

Как-то так:

Код: Sub Clear_All_ComboBoxes(name_current_combo)
Dim oControl As Control
For Each oControl In UserForm1.Controls
If TypeOf oControl Is MSForms.ComboBox And oControl.Name <> name_current_combo Then oControl.Value = ""
Next oControl
End Sub
Автор: Dombay
Дата сообщения: 11.03.2016 11:25
Добрый день, подскажите пожалуйста:

Cклонение по падежам excel на украинском? Есть ли бесплатный вариант в виде надстройки?

А то только на Morpher попадаю при поиске, а он платный.
Автор: Anagal
Дата сообщения: 19.03.2016 19:06
Может кто где видел программу на VBA нахождения собственных чисел и собственных векторов у матрицы из комплексных чисел?
Автор: Linguist1979
Дата сообщения: 20.03.2016 14:58
Не могу добавить ни один компонент в меня надстроек. Куда-то они все подевались!
https://imgur.com/VlkMlju
При установке пакета Microsoft Office 2010 32-bit все нужные галочки были поставлены и всё установилось.
Что я делаю не так? Windows 10 64-bit Single Language.
Автор: DJMC
Дата сообщения: 08.04.2016 16:06
Есть файл http://my-files.ru/7dqosu , прошу подсказать можно ли реализовать поиск по не скольким строкам, к примеру в первом столбце хочу найти все варианты которые были после повторения цифр 2 1 2 .

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127

Предыдущая тема: VS 2010


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