21.12.2010, 15:37 | #1 |
Участник
|
Сорри, что пишу оффтоп здесь, но оч. надеюсь, что коллеги не только в Навижн сильны и смогут подскать что разумное
Вопрос в следующем: Дано: таблица в Excel в ней три столбца: А, В и С (будем считать их тремя множествами) В каждой ячейке - некий код (строка символов). Найти: столбец D должен содержать объединение множеств А, В и С (т.е. каждое значение из первых трех столбцов должно попасть в последний и при том только один раз) Можно ли с помощью стандартных экселевских функций/инструментов решить эту задачу или надо писать макрос? |
|
21.12.2010, 17:06 | #2 |
Administrator
|
а можно в более чаловеческих примерах? с цифрами и буквами...
понял все слова, не понял про объединение множеств. позитив: функций там полно, какую-то точно найдем. |
|
21.12.2010, 17:12 | #3 |
Участник
|
Считаю что проще загрузить всё в созданные таблицы нава и обработать всё скриптом. Или необходимо постоянное решение?
|
|
21.12.2010, 17:20 | #4 |
Administrator
|
если понадобится что-то типа СРКВОТКЛ, то проще оставить в Excel...
|
|
21.12.2010, 18:30 | #5 |
Участник
|
Можно выстроить данные в один столбец и сделать по нему сводную таблицу.
|
|
22.12.2010, 14:20 | #6 |
Участник
|
Цитата:
Содержимое в ячейках колонки А: К1, К2, К3, К4, Х23456 Колонка В: М1, М2, К2, О3 Колонка С: С1, М1, К2, К4, О3, О4, М12 Как видим, некоторые эелементы встречаются не только в одной колонке (Н-р, К2, М1, К4, О3), но и в двух...а то и в трех. Колонка D должна содержать следующий набор: С1, К1, К2, К3, К4, М1, М2, М12, О3, О4, Х23456 Т.е. каждое значение из первых трех должно быть в четвертой, но только один раз! |
|
22.12.2010, 14:30 | #7 |
Участник
|
|
|
22.12.2010, 15:09 | #8 |
Участник
|
По ходу родилось такое решение :
Все колонки копируем в одну (Например в А) (допустим значения разместились в ячейках с А1 по А11) В В1 пишем формулу: =WENN(ZÄHLENWENN(A1:$A$11;A1)=1;A1;"") Копируем ее в остальные ячейки (с В2 по В11) Тогда в колонке В получим искомое. Останется лишь отсортировать, чтобы пустые значения ушли все вниз. |
|
22.12.2010, 17:18 | #9 |
Участник
|
А в Навижн не проще?
j := ‘0’; …… j := INCSTR(j); TempA := XlWorkSheet.Range(‘A’+j).VALUE + ‘,X’; TempB := XlWorkSheet.Range(‘B’+j).VALUE + ‘,X’; TempC := XlWorkSheet.Range(‘C’+j).VALUE + ‘,X’; TempD := ‘,’; k := 0; tText := ‘’; WHILE tText <> ‘X’ DO BEGIN k += 1; tText := SELECTSTR(k, TempA); IF STRPOS(TempD,’,’+ tText+’,’) = 0 THEN TempD := TempD + tText+’,’; END; k := 0; tText := ‘’; WHILE tText <> ‘X’ DO BEGIN k += 1; tText := SELECTSTR(k, TempB); IF STRPOS(TempD,’,’+ tText+’,’) = 0 THEN TempD := TempD + tText+’,’; END; k := 0; tText := ‘’; WHILE tText <> ‘X’ DO BEGIN k += 1; tText := SELECTSTR(k, TempC); IF STRPOS(TempD,’,’+ tText+’,’) = 0 THEN TempD := TempD + tText+’,’; END; TempD := DELCHR(TempD,’<>’,’,’); XlWorkSheet.Range(‘D’+j).VALUE := TempD; |
|
23.12.2010, 05:58 | #10 |
Administrator
|
хм... SQL (Access?) вам в руки
Select ColumnA.Code as Code union Select ColumnB.Code as Code union Select ColumnC.Code as Code Group By Code |
|
01.07.2013, 14:39 | #11 |
Участник
|
А по VBA есть специалисты? />
Дано: два столбца. Первый столбец - Код, второй столбец - Описание. Необходимо для каждой строки создать отдельный текстовый файл Код.txt, внутри которого будет значение второго столбца соответствующей строки, то есть Описание. Гугл помог макросом, который создает по такому алгоритму пустые файлы: Код: Sub Create_TXT_Files() Dim fso As Object, avArr, li As Long avArr = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value With CreateObject("Scripting.FileSystemObject") For li = 1 To UBound(avArr, 1) If Len(avArr(li, 1)) Then Set fso = .CreateTextFile("C:\" & avArr(li, 1) & ".txt", True) Next li End With End Sub |
|
01.07.2013, 15:24 | #12 |
Участник
|
Цитата:
Сообщение от Kadawrik
Сорри, что пишу оффтоп здесь, но оч. надеюсь, что коллеги не только в Навижн сильны и смогут подскать что разумное />
Вопрос в следующем: Дано: таблица в Excel в ней три столбца: А, В и С (будем считать их тремя множествами) В каждой ячейке - некий код (строка символов). Найти: столбец D должен содержать объединение множеств А, В и С (т.е. каждое значение из первых трех столбцов должно попасть в последний и при том только один раз) Можно ли с помощью стандартных экселевских функций/инструментов решить эту задачу или надо писать макрос? Или я чего не понимаю? |
|
01.07.2013, 15:59 | #13 |
Участник
|
Цитата:
Сообщение от Васыо
А по VBA есть специалисты? />/>
Дано: два столбца. Первый столбец - Код, второй столбец - Описание. Необходимо для каждой строки создать отдельный текстовый файл Код.txt, внутри которого будет значение второго столбца соответствующей строки, то есть Описание. Гугл помог макросом, который создает по такому алгоритму пустые файлы: Код: Sub Create_TXT_Files() Dim fso As Object, avArr, li As Long avArr = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value With CreateObject("Scripting.FileSystemObject") For li = 1 To UBound(avArr, 1) If Len(avArr(li, 1)) Then Set fso = .CreateTextFile("C:\" & avArr(li, 1) & ".txt", True) Next li End With End Sub |
|
01.07.2013, 16:58 | #14 |
Участник
|
Constantine я уже потратил на гугл некоторое количество времени. Нет, так не подойдет. И разбираться с VBA нет ни острой необходимости, ни желания. Если можете добавить пару строк нужного кода - добавьте пожалуйста, мне не процесс ловли рыбы интересен, а сразу рыба, причем всего одна порция
|
|
01.07.2013, 17:34 | #15 |
Участник
|
Цитата:
Сообщение от Васыо
Constantine я уже потратил на гугл некоторое количество времени. Нет, так не подойдет. И разбираться с VBA нет ни острой необходимости, ни желания. Если можете добавить пару строк нужного кода - добавьте пожалуйста, мне не процесс ловли рыбы интересен, а сразу рыба, причем всего одна порция />/>/>
Код: Sub Create_TXT_Files() Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim fso As Object, avArr, avArr2, li As Long avArr = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value avArr2 = Range(Cells(1, 2), Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).Value With CreateObject("Scripting.FileSystemObject") For li = 1 To UBound(avArr, 1) If Len(avArr(li, 1)) Then Set fso = .OpenTextFile("C:\for_exchange\" & avArr(li, 1) & ".txt", ForWriting, True) fso.write avArr2(li, 1) fso.Close End If Next li End With End Sub |
|
01.07.2013, 17:38 | #16 |
Участник
|
Спасибо!
|
|
03.07.2013, 12:33 | #17 |
Участник
|
|
|