Забор Что можно написать на заборе? Да все, что угодно!
Ответить
Перейти к новому Перейти к новому   Опции темы Опции просмотра
Кто шарит в экселе помогите | by @Gudron
Непрочитано 10.12.2009, 14:08   # 1
действующий ник user1
 
Аватар для @Gudron
 
Регистрация: 04.10.2006
Адрес: Минск
Возраст: 36
Сообщений: 2,060
Записей в дневнике: 6
Байк: Compact
@Gudron вне форума
По умолчанию Кто шарит в экселе помогите
Имеем 2 столбца с данными:
первый вида <data>
Второй <data><data1>
другими словами первый содержит только фамилии, а второй те же фамилии и ещё имена
Задача:
Заменить данные из первого столбца дополненными данными из второго.

Фамилии в первом столбце находятся в определенном порядке, в котором они и должны оставаться после дополнения их данными из второго столбца.
пример:
а1: Пупкин в1: Антон Пальчиков
а2: Воробей в2: Андрей Воробей
а3: Пальчиков в3: Вася Пупкин

Нужно получить инфрмацию в столбце "а" вида

а1: Вася Пупкин
а2: Андрей Воробей
а3: Антон Пальчиков
Цитата
Непрочитано 10.12.2009, 14:17   # 2
 
Аватар для Cooper
 
Регистрация: 14.11.2006
Адрес: vilnius-smolensk
Возраст: 35
Сообщений: 4,498
Записей в дневнике: 16
Байк: trialsmaster.net
Отправить сообщение для Cooper с помощью ICQ
Cooper вне форума
не шарю. но ник приятно видеть правильный!
Цитата
Непрочитано 10.12.2009, 15:02   # 3
 
Аватар для rastayak
 
Регистрация: 24.10.2006
Адрес: Сходня\Зеленоград
Возраст: 35
Сообщений: 2,428
Записей в дневнике: 4
Байк: Echo 8 кг
Отправить сообщение для rastayak с помощью ICQ
rastayak вне форума
Попробую сейчас сделать...
А нужно пользоваться только функциями Экселя, без vba?
UPD: В принципе сейчас функциями сделаю.

Конкретно для 3-х значений сделал - если больше - то надо делать цикл, а это уже в макросах...
Цитата
Непрочитано 10.12.2009, 15:27   # 4
3.2%
 
Аватар для Kефир
 
Регистрация: 01.08.2005
Адрес: Ленинград
Возраст: 38
Сообщений: 7,935
Записей в дневнике: 1
Байк: Старый Притон
Отправить сообщение для Kефир с помощью ICQ
Kефир вне форума
Я сделал уже. Не парься.

Код:
using System.Collections.Generic;
using System.IO;
using System.Text;


namespace ConsoleApplication6
{
   internal class Program
   {
      private static void Main(string[] args)
      {
         string[] lines = File.ReadAllLines("c:\\temp\\gudron.csv", Encoding.GetEncoding(1251));
         var col1 = new List<string>();
         var col2 = new List<string>();
         var result = new List<string>();

         foreach (string line in lines)
         {
            string[] ss = line.Split(';');
            col1.Add(ss[1]);
            col2.Add(ss[3]);
         }

         foreach (string s in col1)
         {
            if (string.IsNullOrEmpty(s))
               continue;

            string match = col2.Find(x => x.Contains(s));
            result.Add(string.IsNullOrEmpty(match) ? s : match);
         }

         File.WriteAllLines("c:\\temp\\gudron_result.csv", result.ToArray(), Encoding.GetEncoding(1251));
      }

   }
}}
Цитата
Непрочитано 10.12.2009, 15:30   # 5
Котэ
 
Аватар для Feo
 
Регистрация: 04.04.2009
Адрес: Таганрог
Возраст: 33
Сообщений: 823
Записей в дневнике: 3
Байк: Bionic b5r
Feo вне форума
ммм,С++?))
Цитата
Непрочитано 10.12.2009, 15:32   # 6
 
Аватар для rastayak
 
Регистрация: 24.10.2006
Адрес: Сходня\Зеленоград
Возраст: 35
Сообщений: 2,428
Записей в дневнике: 4
Байк: Echo 8 кг
Отправить сообщение для rastayak с помощью ICQ
rastayak вне форума
Нифига себе...
Ну да ладно, а если надо сделать только средствами MS Excel?
Цитата
Непрочитано 10.12.2009, 15:37   # 7
3.2%
 
Аватар для Kефир
 
Регистрация: 01.08.2005
Адрес: Ленинград
Возраст: 38
Сообщений: 7,935
Записей в дневнике: 1
Байк: Старый Притон
Отправить сообщение для Kефир с помощью ICQ
Kефир вне форума
Сказали - можно чем угодно Как мне проще так и сделал. Важен результат.
C# это а не С++

Но я готов обсудить ради интереса, как это сделать без макросов. Пока что простого решения не вижу.
Цитата
Непрочитано 10.12.2009, 15:42   # 8
 
Аватар для rastayak
 
Регистрация: 24.10.2006
Адрес: Сходня\Зеленоград
Возраст: 35
Сообщений: 2,428
Записей в дневнике: 4
Байк: Echo 8 кг
Отправить сообщение для rastayak с помощью ICQ
rastayak вне форума
Без макросов ИМХО никак.
Я делал так - разбил строку ИМЯ_ФАМИЛИЯ на две, потом условиями прогонял каждую строку на совпадения, если фамилия совпадала - слеплял ячейки вместе. Если больше значений - размер условия очень вырастет, так что только макросы (если пользовать только офисные средства).
Цитата
Непрочитано 10.12.2009, 15:50   # 9
3.2%
 
Аватар для Kефир
 
Регистрация: 01.08.2005
Адрес: Ленинград
Возраст: 38
Сообщений: 7,935
Записей в дневнике: 1
Байк: Старый Притон
Отправить сообщение для Kефир с помощью ICQ
Kефир вне форума
Щас посмотрел, есть функция vlookup например. Ищет значение в колонке. Думаю её можно заюзать..
Цитата
Непрочитано 10.12.2009, 16:33   # 10
действующий ник user1
 
Аватар для @Gudron
 
Регистрация: 04.10.2006
Адрес: Минск
Возраст: 36
Сообщений: 2,060
Записей в дневнике: 6
Байк: Compact
@Gudron вне форума
Огромное спасибо Кефир
Цитата
Непрочитано 10.12.2009, 20:49   # 11
 
Аватар для andzhi4
 
Регистрация: 10.04.2006
Адрес: Luga Band (Луга)
Сообщений: 1,906
Записей в дневнике: 32
Байк: pinigin
Отправить сообщение для andzhi4 с помощью ICQ
andzhi4 вне форума
Цитата:
string.IsNullOrEmpty
Фигасе на С# методы Или это для всех .NET SDK работает?
Может там еще есть string.IsNameOfKnownArtist ?
На самом деле, удобно.

Апд: пардон за глупые вопросы. Просто я до сих пор фигачу на Delphi под Win32, ибо свято верю, что на .NET можно писать только медиаплееры и браузеры, а серьезное ПО для моделирования технологических процессов требует реализации вычислительных методов непосредственно программистом - не хочу, чтоб у меня памятью управлял непонятный гарбаж-коллектор
Цитата
Непрочитано 10.12.2009, 21:09   # 12
3.2%
 
Аватар для Kефир
 
Регистрация: 01.08.2005
Адрес: Ленинград
Возраст: 38
Сообщений: 7,935
Записей в дневнике: 1
Байк: Старый Притон
Отправить сообщение для Kефир с помощью ICQ
Kефир вне форума
Анжич-анжич..
Серьёзное ПО требует стабильности. Гарбаж-коллектор для того и сделан, чтобы ты думал о техпроцессах, а не о том, где бы мемори-лик не случился.

Дебаггер, опять же, намного круче чем в unmanaged языках. А это очень важно для серьёзных приложений.

Медиаплееры и браузеры как раз на .NET врядли. А вот бизнес-приложения ("серьёзное по") - на всю катушку. Тут есть всё для разработки гагантских приложений со сложной архитектурой. Я этим собственно и занимаюсь уже довольно давно.

Цитата:
Может там еще есть string.IsNameOfKnownArtist
Это легко реализовать при помощи extension methods
Там много чего есть удобного. Обрати внимание на col2.Find(x => x.Contains(s)). Ну это так, цветочки. Дельфи даже рядом не валялся. А WPF видел? Linq2Sql?

Короче, очень советую попробовать .NET или Java, у них там очень похожие крутые штуки.
Цитата
Непрочитано 11.12.2009, 00:28   # 13
 
Аватар для andzhi4
 
Регистрация: 10.04.2006
Адрес: Luga Band (Луга)
Сообщений: 1,906
Записей в дневнике: 32
Байк: pinigin
Отправить сообщение для andzhi4 с помощью ICQ
andzhi4 вне форума
Круто!
col2.Find(x => x.Contains(s)) - реально интересно, на дельфе такое в 3-4 строки укладывается, хотя, может embarcadero в версии 2010 чего-нибудь нового подкинули
С WPF конечно работал, но для фана, а с Link2SQL побаловаться пока не удалось.
Delphi, в принципе, тоже поддерживает .NET с шестой версии, так что все прелести этой библиотеки доступны.
У меня сейчас стоит задача оптимизации приложения, которое моделирует процесс разделения газожидкостной смеси в жалюзийном сепараторе.Если короче, то основной модуль представляет собой 4 или иногда 5 вложенных циклов, в каждом от 1000 до 10000 операций, причем со сложными математическими преобразованиями. Наш эксперт сказал, что если переведу это дело на .NET - начну терять ценные миллисекунды на каждом шаге, а в результате это выльется в приличное замедление работы, с тех пор я как-то .NET стороной обхожу
Цитата
Непрочитано 11.12.2009, 01:31   # 14
3.2%
 
Аватар для Kефир
 
Регистрация: 01.08.2005
Адрес: Ленинград
Возраст: 38
Сообщений: 7,935
Записей в дневнике: 1
Байк: Старый Притон
Отправить сообщение для Kефир с помощью ICQ
Kефир вне форума
Ну никто и не спорит, что такие алгоритмы, где каждые такт дорог, надо реализовывать на низком уровне. Хотя опять же как посмотреть.. где-то .net и не хуже может оказаться. Всё зависит от прокладкой между сиденьем и клавиатурой.

Например, сейчас уже зачастую быстрее будет работать какой-нибудь алгоритм на C++, чем на ассемблере. Оптимизирующие компиляторы творят чудеса.

Цитата:
все прелести этой библиотеки доступны.
Это намного больше чем библиотека. Смотря что обсуждать. Всякие лямбда-выражения - это фичи самого языка, синтаксический сахар. То, что позволяет вместо 5 строк одну написать.

Эх, можно долго всё это обсуждать )
Технологии вообще летят вперёд, только одно осваиваешь - уже новое выходит.. только поспевай. Мы уже пишем под .NET 4 Beta2
Цитата
Непрочитано 11.12.2009, 02:38   # 15
 
Аватар для andzhi4
 
Регистрация: 10.04.2006
Адрес: Luga Band (Луга)
Сообщений: 1,906
Записей в дневнике: 32
Байк: pinigin
Отправить сообщение для andzhi4 с помощью ICQ
andzhi4 вне форума
Нормально, не отстаете от времени.
Я вообще то не кодер, а it-специалист широкого профиля. Вследствие большой ширины, особой глубины нигде не достигается , поэтому всегда есть что-то, чего не знаю или не успел узнать/попробовать. Хотя, может оно и к лучшему
Цитата
Непрочитано 11.12.2009, 22:51   # 16
 
Аватар для Gazza
 
Регистрация: 16.08.2002
Адрес: Moscow.RU/London.UK
Сообщений: 5,018
Отправить сообщение для Gazza с помощью ICQ Отправить сообщение для Gazza с помощью MSN
Gazza вне форума
о_0
Цитата
Непрочитано 12.12.2009, 02:07   # 17
 
Аватар для -=MIXMAKER7=-
 
Регистрация: 21.11.2005
Адрес: Красноярск
Возраст: 42
Сообщений: 9,932
Записей в дневнике: 9
Байк: Koxx Sky super
Отправить сообщение для -=MIXMAKER7=- с помощью ICQ
-=MIXMAKER7=- вне форума
Как же ты, Митяй, прав!
Цитата
Кто шарит в экселе помогите | by @Gudron
Ответить


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:14.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot