|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.01.2015, 23:14 | #1 |
Пользователь
Регистрация: 09.01.2015
Сообщений: 26
|
Сцепление текстовых значений при двух условиях
ЗДРАВСТВУЙТЕ.
необходимо сцепить текстовые ячейки в столбце "итоги-1" на листе2 при вводе условий "месяц2" и "значение1" используя данные листа1 для WORD2003 |
22.01.2015, 00:55 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
см.вложение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
22.01.2015, 01:13 | #3 |
Пользователь
Регистрация: 09.01.2015
Сообщений: 26
|
|
22.01.2015, 01:58 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
собственно, все уже было и в первом файле, только подойти с другой стороны
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
22.01.2015, 08:15 | #5 |
Пользователь
Регистрация: 09.01.2015
Сообщений: 26
|
|
22.01.2015, 16:13 | #6 |
Пользователь
Регистрация: 09.01.2015
Сообщений: 26
|
|
22.01.2015, 17:08 | #7 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
может как-то так
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
22.01.2015, 21:50 | #8 |
Пользователь
Регистрация: 09.01.2015
Сообщений: 26
|
а что если переделать следующую функцию под следующие параметры
диапазон указывает не 1 столбец, а два которые стоят рядом, а критерий не 1 ячейка а две (стоящие рядом "С4:D4" напримет) '--------------------------------------------------------------------------------------- ' Procedure : СцепитьЕсли ' Author : The_Prist(Дмитрий); http://www.excel-vba.ru ' Purpose : Функция сцепляет данные из диапазона, указанного критерием Диапазон_сцепления ' в том случае, если ячейка из критерия Диапазон входит в условие ' указанное Критерием. В качекстве Критерия может быть ссылка на ячейку, ' либо текст/число, либо операторы сравнения ' (как все привыкли в СУММЕСЛИ, СЧЁТЕСЛИ и т.д. - "<>""",">8" и пр.). '--------------------------------------------------------------------------------------- Function СцепитьЕсли(ByRef Диапазон As Range, ByVal Критерий As String, ByRef Диапазон_сцепления As Range, Optional Разделитель As String = " ") As String Dim li As Long, sStr As String, avItem, avDateArr(), avRezArr(), lUBnd As Long If Диапазон.Count > 1 Then avDateArr = Intersect(Диапазон, Application.Caller.Parent.UsedRange ).Value avRezArr = Intersect(Диапазон_сцепления, Application.Caller.Parent.UsedRange ).Value If Диапазон.Rows.Count = 1 Then avDateArr = Application.Transpose(avDateArr) avRezArr = Application.Transpose(avRezArr) End If Else avDateArr(1, 1) = Диапазон.Value avRezArr(1, 1) = Диапазон_сцепления.Value End If lUBnd = UBound(avDateArr, 1) 'Опрееделяем вхождение операторов сравнения в Критерий Dim objRegExp As Object, objMatches As Object Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Global = False: objRegExp.Pattern = "=|<>|=>|>=|<=|=<|>|<" Set objMatches = objRegExp.Execute(Критерий) 'Если есть вхождения If objMatches.Count > 0 Then Dim sStrMatch As String sStrMatch = objMatches.Item(0) Критерий = Replace(Replace(Критерий, sStrMatch, "", 1, 1), Chr(34), "", 1, 2) Select Case sStrMatch Case "=" For li = 1 To lUBnd If avDateArr(li, 1) = Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case "<>" For li = 1 To lUBnd If avDateArr(li, 1) <> Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case ">=", "=>" For li = 1 To lUBnd If avDateArr(li, 1) >= Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case "<=", "=<" For li = 1 To lUBnd If avDateArr(li, 1) <= Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case ">" For li = 1 To lUBnd If avDateArr(li, 1) > Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case "<" For li = 1 To lUBnd If avDateArr(li, 1) < Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li End Select Else 'Если нет вхождения For li = 1 To lUBnd If avDateArr(li, 1) Like Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li End If СцепитьЕсли = sStr End Function |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подсчет количества ячеек при двух условиях | tigov | Microsoft Office Excel | 2 | 22.10.2013 12:52 |
Сцепление двух списков | ННадежда | Microsoft Office Excel | 6 | 25.01.2011 17:02 |
Сохранение и загрузка в файл текстовых значений и значений типа Boolean | krikaved | Общие вопросы Delphi | 1 | 16.03.2010 07:53 |
Деление элементов двух массивов при зад. условиях | Leona_L | Microsoft Office Excel | 6 | 03.04.2009 20:52 |
Слияние двух текстовых файлов | nataly_ukr | Общие вопросы Delphi | 5 | 26.12.2007 16:45 |