Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - Подскажите функцию для excel

Ответить
Настройки темы
2013 - Подскажите функцию для excel

Ветеран


Сообщения: 558
Благодарности: 5

Профиль | Отправить PM | Цитировать


Изменения
Автор: Alexander_88
Дата: 28-09-2015
Здравствуйте подскажите возможно ли сделать следующее....

есть сверху большая таблица и снизу две мини таблицы (пример):

Код: Выделить весь код
A         B               C                         D
90    Яблоки   5,6+4,6+9,6+10,5+15,0   45,3-5-6,5-9,6-6-8,3
150   Груши    5,6+4,6+9,6+10,5+15,0   45,3-5-6,5-9,6-6-8,3
350   Финики  5,6+4,6+9,6+10,5+15,0   45,3-5-6,5-9,6-6-8,3

Код: Выделить весь код
A      B       C        D
180   Груши   5,6
340   Курага   9,6
90     Яблоки   10
Код: Выделить весь код
A      B                     C                               D
90    Бананы                                                6,5
155  Груши                                                  4,6
350  Финики                                                8,4
Необходимо добавить мини таблицы к большой таблице. Притом, если совпадают первый и второй столбец, то третий и четвертый столбцы добавлялись друг к другу.... третий столбец добавлялся через знак + а четвертый через знак +

Т.е. объединив мини таблицы с большой, должна получится такая таблица

Код: Выделить весь код
A      B                     C                          D
90     Яблоки   5,6+4,6+9,6+10,5+15,0+10   45,3-5-6,5-9,6-6-8,3
150   Груши    5,6+4,6+9,6+10,5+15,0       45,3-5-6,5-9,6-6-8,3
350   Финики  5,6+4,6+9,6+10,5+15,0       45,3-5-6,5-9,6-6-8,3-8,4
180   Груши    5,6
340   Курага    9,6
90    Бананы                              6,5
155  Груши                                4,6

Отправлено: 20:38, 27-09-2015

 

Пользователь


Сообщения: 114
Благодарности: 13

Профиль | Отправить PM | Цитировать


На счет функции не уверен, а вот макросом можно замутить.
Не понятно:
1. как соединяются столбцы при совпадении.
2. размеры таблиц.

Хорошо бы файл с таблицами..

Отправлено: 09:14, 28-09-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Динохромный


Contributor


Сообщения: 712
Благодарности: 322

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:27, 28-09-2015 | #3


Ветеран


Сообщения: 558
Благодарности: 5

Профиль | Отправить PM | Цитировать


Поправка.. как третий так и четвертый столбец должны сцепляться через знак +

Номера строк различные, я могу сам выделять данные, которые нужно объединять (если первый и второй столбец совпадает, сцеплять третьи и четвертые столбцы таблиц через знак + Если не совпадает, то просто добавлять четыре столбца ниже). Также должны игнорироваться пустые ячейки. Сделал небольшой пример, два листа, исходный (с данными до применения ф-ции) и результирующий (с данными после выполнения функции).

Желательно и удобно, чтобы объединение происходило с помощью кнопки.. т.е. я выделяю весь диапазон, который требуется объединить (на примере исходного листа это диапазон от ячейки А2 до ячейки D21), нажимаю эту кнопку и должно получиться то, что мы видим в листе "Результат".

Последний раз редактировалось Alexander_88, 16-10-2015 в 09:28.


Отправлено: 14:56, 28-09-2015 | #4


Ветеран


Сообщения: 558
Благодарности: 5

Профиль | Отправить PM | Цитировать


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

Отправлено: 18:03, 28-09-2015 | #5


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата Alexander_88:
есть сверху большая таблица и снизу две мини таблицы (пример): »
Меня интересует такой вопрос, допустим та, верхняя таблица, когда в неё в конец добавятся данные, не получится ли так что места не хватит, т.к. нижние маленькие будут мешать?

Можно ли две маленькие вынести на отдельные листы?

И ещё мне интересно, есть ли предельное количество строк для трёх таблиц, верхней и двух нижних? Например, можно уложиться в 100 строк и знать что 101-й не будет или же это неизвестно?

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 21:56, 28-09-2015 | #6


Ветеран


Сообщения: 558
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата Drongo:
Меня интересует такой вопрос, допустим та, верхняя таблица, когда в неё в конец добавятся данные, не получится ли так что места не хватит, т.к. нижние маленькие будут мешать? »
Я могу либо специально пропускать очень много строк, между большой таблицей и маленькими, чтобы места хватило, либо
Цитата Drongo:
Можно ли две маленькие вынести на отдельные листы? »
Можно вынести на отдельные листы.

Цитата Drongo:
И ещё мне интересно, есть ли предельное количество строк для трёх таблиц, верхней и двух нижних? Например, можно уложиться в 100 строк и знать что 101-й не будет или же это неизвестно? »
предельное количество строк будет не больше 1000... это я с запасом взял

Отправлено: 22:14, 28-09-2015 | #7


Старожил


Сообщения: 369
Благодарности: 49

Профиль | Отправить PM | Цитировать


Alexander_88,
сделать можно
но есть наводящие вопросы:
в второй и третьей таблице - есть повторяющиеся записи - например "яблоки" 10, а чуть ниже "яблоки" 25. Тоесть - "посчитанные (перенесенные в первую таблицу ) данные по каждому из фруктов можно удалять из 2 и третьей таблицы или менять их нельзя и хранить как оригинальные данные?
алгоритм - прост: цикл 1 - построчный опрос и запоминание значений (в переменные) по столбцам "А" и "В" в первой таблице, а внутри этого цикла - ещё два цикла по опросу и запоминанию значений (в переменные) второй и третей таблицы - потом сравнение на предмет совпадения переменных - если да - то где надо сплюсовать или вычесть - если нет - пропускаем.

Отправлено: 01:07, 29-09-2015 | #8


Динохромный


Contributor


Сообщения: 712
Благодарности: 322

Профиль | Отправить PM | Цитировать


Alexander_88, насколько я понял вашу мысль, вам не нужно суммировать цифры, на выходе должна быть текстовая строка, в которой через знак "+" перечисляются цифры, то есть например "8.7+6.89", а не их сумма 15.59. Попробуйте код ниже. Оговорки: таблицы должны находится на одной странице, интересующие вас данные выделяете мышкой и запускаете код, результат будет помещаться каждый раз на вновь созданный лист.
Код

Код: Выделить весь код
Option Explicit
Public Sub data_extr()
Dim objCell As Object, targetSheet As Object, dataSheet As Object
Dim i As Integer
Dim Flag As Boolean
Set dataSheet = ThisWorkbook.ActiveSheet
Set targetSheet = ThisWorkbook.Sheets.Add
dataSheet.Activate
For Each objCell In Intersect(Selection, Selection.Columns(1))
      If objCell.Value <> "" Then
        i = 1
        Flag = False
        Do
        
        If targetSheet.Cells(i, 1).Value = "" Then
            Flag = True
            targetSheet.Cells(i, 1).Value = objCell.Value
            targetSheet.Cells(i, 2).Value = objCell.Offset(0, 1).Value
            targetSheet.Cells(i, 3).Value = objCell.Offset(0, 2).Value
            targetSheet.Cells(i, 4).Value = objCell.Offset(0, 3).Value
        Else
            If targetSheet.Cells(i, 1).Value = objCell.Value And targetSheet.Cells(i, 2).Value = objCell.Offset(0, 1).Value Then
                If objCell.Offset(0, 2).Value <> "" Then targetSheet.Cells(i, 3).Value = targetSheet.Cells(i, 3).Value & "+" & objCell.Offset(0, 2).Value
                If objCell.Offset(0, 3).Value <> "" Then targetSheet.Cells(i, 4).Value = targetSheet.Cells(i, 4).Value & "+" & objCell.Offset(0, 3).Value
                Flag = True
            End If
        End If
        i = i + 1
        Loop Until Flag
    End If
Next objCell
targetSheet.Activate
Set dataSheet = Nothing
Set targetSheet = Nothing
End Sub
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:24, 29-09-2015 | #9


Пользователь


Сообщения: 114
Благодарности: 13

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Пример2.rar
(23.7 Kb, 20 просмотров)

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

Отправлено: 11:53, 29-09-2015 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - Подскажите функцию для excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
SSD - безопасно ли для SSD использовать функцию "стирание дисков" в программе CCleaner? makatuk Накопители (SSD, HDD, USB Flash) 8 11-09-2013 11:33
2007 - Как добавить функцию в качестве общей для последующего использования в совместном дос yok Microsoft Office (Word, Excel, Outlook и т.д.) 6 07-03-2012 13:21
C/C++ - [решено] Поиск слова в тексте,подскажите функцию VokaMut Программирование и базы данных 2 10-01-2012 15:09
CMD/BAT - [решено] Как запустить функцию Защиты системы для диска С: ? wiznv Скриптовые языки администрирования Windows 3 29-11-2011 16:11
Подскажите функцию в C++ dimakus Программирование и базы данных 2 01-04-2004 14:57




 
Переход