Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Работа с EXEL-скими файлами. (Поиск в одном доке,вставка в другой автоматически)  (Прочитано 4727 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Что подскажите по примеру выше?  ???

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Сейчас посмотрю, просто не видел ваше добавочное редактирование в ответе # 14.

Ставить там надо точку с запятой, «это разделитель списков». У вас в системе это ; у меня , поэтому возникло разночтение.

Формулу, да, надо вставлять в столбик, в который надо вставлять значение. В каждую ячейку. Сейчас проверю формулу. Доберусь только до Екселя.
« Последнее редактирование: 16 Февраля 2011, 09:41:19 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Сейчас посмотрю, просто не видел ваше добавочное редактирование в ответе # 14.

Ставить там надо точку с запятой, «это разделитель списков». У вас в системе это ; у меня , поэтому возникло разночтение.

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

В каждую ячейку вставлять?.... ммм :idiot2:
То бишь тут получается полуавтоматический режим работы? верно..

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Режим получается вполне автоматический. Просто вы вставляете формулу в одну ячейку, а потом копируете её в другие (или делаете заполнение вниз), И ТОГДА: все ссылки в формулах автоматически поправляются как надо, и все ячейки рассчитываются автоматически.
Делюсь знаниями, но их у меня мало!

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
А можно выделить весь столбик, который состоит из порядка 3 тысяч ячеек... и туда один раз сделать только один раз копи-паст формулы, чтоб сразу для всех ячеек вертикального столбика?
« Последнее редактирование: 17 Февраля 2011, 15:56:46 от TrEK »

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Если у вас так, как в ответе # 14, то можно сделать следующим образом:
1. вписать формулу в ячейку F2.
2. сделать double-click по правому нижнему уголку ячейки. Так как на картинке:

Весь столбец заполнится (если в столбце E нет «дырок»). Voila.
Можно «взять» мышкой за этот уголок и потащить вниз. Можно выделить все ячейки, а потом нажать Ctrl-D. Это нзывается «заполнить вниз».
Делюсь знаниями, но их у меня мало!

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Если у вас так, как в ответе # 14, то можно сделать следующим образом:
1. вписать формулу в ячейку F2.
2. сделать double-click по правому нижнему уголку ячейки. Так как на картинке:

Весь столбец заполнится (если в столбце E нет «дырок»). Voila.
Можно «взять» мышкой за этот уголок и потащить вниз. Можно выделить все ячейки, а потом нажать Ctrl-D. Это нзывается «заполнить вниз».

Все работает, но есть мелкие нюансы, которые вызывают неприятные последствия )
Как заставить формулу искать значения во всех вкладках первого документа, а не в одной,название которой вписано в формуле. Это раз.
Ну и второй вопрос: Не все значения из столбика D есть во втором документе в столбике A. Соответственно в столбик F второго документа вставляется #Н/Д

Соответственно получается такое:


Вот первый файл, в котором по порядку перебираем числа в столбике D... и потом записываем значение из столбика E в столбик F второго документа....

1
2
3
4
5
6
A
Номер:
1
2
3
4
5
B
Имя:
имя1
имя2
имя3
имя4
имя5
C
IP:
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.1.1.5
D
Телефон:
500000
500001
500002
500003
500004

E
Значение:
90
90
110
110
90

F
Дата:
05.01.11
04.01.11
03.01.11
02.02.11
01.02.11
G
Адресс:
ул.Стрит1
ул.Стрит2
ул.Стрит3
ул.Стрит4
ул.Стрит5
H
Дргуое:
ля-ля-ля1
ля-ля-ля2
ля-ля-ля3
ля-ля-ля4
ля-ля-ля5



В итоге получаю вот что:

1
2
3
4
5
6
7
8
9
10

A
Телефон:
500000
500001
500002
500003
500004
500005
500006
500007
500008

B
Имя:
имя1
имя2
имя3
имя4
имя5
имя6
имя7
имя8
имя9
C
Данные1:
1
2
3
4
5
6
7
8
9
D
Данные2:
1
2
3
4
5
6
7
8
9
E
Данные3:
1
2
3
4
5
6
7
8
9
F
Значение:
90
90
110
110
90
#Н/Д
#Н/Д
#Н/Д
#Н/Д

G
Адресс:
ул.Стрит1
ул.Стрит2
ул.Стрит3
ул.Стрит4
ул.Стрит5
ул.Стрит6
ул.Стрит7
ул.Стрит8
ул.Стрит9
H
Инфа1:
ййй
ццц
ууу
ккк
еее
ооо
ллл
ддд
жжж
I
Инфа2:
ффф
ыыы
ввв
ааа
ппп
ррр
ччч
яяя
ььь



Как избежать этого #Н/Д ? Чтоб в такие ячейки ничего не вписывалось, ну либо пустое значение.


Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Чтобы избавиться от #Н/Д, надо добавить еще столбец, например G, и в ячейках написать: =если(енд(F2);"";F2)

Это означает: функция если() — тут понятно, если первый аргумент истина, то значение равно второму аргу, иначе — третьему.

енд() — функция возвращает значение ИСТИНА, если ее аргументом является значение #Н/Д — специально для таких случаев.

F2 = по логике это надо написать во второй строчке в файле, когда вы размножите формулу вниз, в следующих строках будет соответственно F3, F4 и т. д.

« Последнее редактирование: 04 Марта 2011, 11:53:27 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Чтобы избавиться от #Н/Д, надо добавить еще столбец, например G, и в ячейках написать: =если(енд(F2);"";F2)


Добавить столбец надо во второй документ? И во все его ячейки вставить =если(енд(F2);"";F2) ?

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Да, во второй документ. Вы в столбце F получите «сырые» данные, а в следующем — обработанные, из которых удалены эти #Н/Д. Ну и там я выше пояснил, в ячейку вставить формулу, а потом размножить вниз.


 =если(енд(F2);"";F2)

в выражении «F2» 2 — это номер строки. В третьей строке формула будет выглядеть =если(енд(F3);"";F3) и т.д.

А чтобы искать во всех вкладках (листах), надо для каждой вкладки сделать во втором документе отдельный столбец и ввести в него указанную формулу (=впр(...)). В формулах надо указать имя листа — в разных столбцах это имя будет, естественно, разное.
« Последнее редактирование: 04 Марта 2011, 12:07:49 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
А чтобы искать во всех вкладках (листах), надо для каждой вкладки сделать во втором документе отдельный столбец и ввести в него указанную формулу (=впр(...)). В формулах надо указать имя листа — в разных столбцах это имя будет, естественно, разное.

А если я, допустим, просто разные формулы (с разными именами вкладок 1-го документа) буду вставлять в одну и ту же ячейку второго документа, тогда я не получу желаемый результат. Имею ввиду , чтоб данные с каждой следующей вкладки просто будут дописываться в соответствующие им ячейки. ?
« Последнее редактирование: 04 Марта 2011, 12:15:33 от TrEK »

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Я думаю, надо сделать как-то так:


1
2
3
4
5
6
7
8
9
10

A
Телефон:
500000
500001
500002
500003
500004
500005
500006
500007
500008

B
Имя:
имя1
имя2
имя3
имя4
имя5
имя6
имя7
имя8
имя9
C
Данные1:
1
2
3
4
5
6
7
8
9
D
Данные2:
1
2
3
4
5
6
7
8
9
E
Данные3:
1
2
3
4
5
6
7
8
9
F
Значение (1):
90
90
110
110
90




G
Значение (2):





70


H
Значение (3):






50
50
50
I
Итого:
=сцепить(F2;G2;H2)
=сцепить(F3;G3;H3)
и т. д.
и т. п.
...
...






И здесь должно получиться
90
90
110
110
90
70
50
50
50


Я тут не стал рисовать столбцы с формулой =если(енд(...);...;...), я думаю, разберетесь.

А в каждом столбце F, G, H формула должна быть:
=ВПР(A2,[LAN.xls]Центр-1(24)!$D:$E,2,ЛОЖЬ)
=ВПР(A2,[LAN.xls]Запад-8(17)!$D:$E,2,ЛОЖЬ)
=ВПР(A2,[LAN.xls]Германия-я(юю)!$D:$E,2,ЛОЖЬ)

Естественно, подразумевается, что в первом файле во всех листах (вкладках) «телефон» и «значение» находятся в столбцах D и E.
« Последнее редактирование: 04 Марта 2011, 12:38:44 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Уугмс, ну более менее понятно.. буду пробовать на практике...

ну а вообще без создавания дополнительных столбиков во втором файле? Добавить в формулу какое-нибудь еще обчисление и условие... Не возможно так да?

У меня около 15 вкладок (листов) в первом файле.. создавать на каждый отдельный столбик во втором файле.. пугает (
Цитировать
=сцепить(F2;G2;H2)
=сцепить(F3;G3;H3)
и т. д.
и т. п.
...
...
После F автоматически число будет увеличиваться?

Цитировать
И здесь должно получиться
90
90
110
110
90
70
50
50
50
Можно ли, чтоб ИТОГО: было в столбике F, а Значение (1) и Значение (2) в последующих?
« Последнее редактирование: 04 Марта 2011, 13:07:45 от TrEK »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Можно даже их спрятать, чтобы глаз не мылился.

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Без дополнительных столбиков можно, но формула получится сложная: =сцепить(если(енд(впр(...Лист1));"";впр(...Лист1));если(енд(впр(...Лист2));"";впр(...Лист2));если(енд(впр(...Лист3));"";впр(...Лист3)); ... )

После F автоматически число будет увеличиваться — да.

чтоб ИТОГО: было в столбике F — можно, тогда формула в столбце F будет =сцепить(G2;H2;I2; .... Z2; ... ... ...)

Ну и если у вас один номер попадётся в двух или более листах — бяда, будет
Итого:
90
90
110
110
909090
110220
70
50
50
50

Но это уж сами следите. Вообще и такую ситуацию можно обработать, главное понять, какое осмысленное действие надо в связи с этим совершить.
Делюсь знаниями, но их у меня мало!

 

Страница сгенерирована за 1.519 секунд. Запросов: 25.