Вернуться   Forum 3Dnews Tech > Софт > Программное обеспечение
Вход через: 

Ответ Создать новую тему
 
Опции темы Опции просмотра
Старый 22.11.2007, 12:13   #1
Lockheed
Женский Новенький
Автор темы
 
Регистрация: 27.09.2007
Адрес: Tallinn Estonia
Помощь по Excel

Прежде, чем задать вопрос в этой теме, попробуйте почитать справку Microsoft Excel, часто помогает...

Последний раз редактировалось Ariny; 09.06.2014 в 19:06.
Lockheed вне форума  
Ответить с цитированием
Старый 29.10.2012, 22:41   Вверх   #321
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
aleksashka7011
А конечная цель какая? Для чего потом это "23,52,53,54,55,56,57,58,59,18,64,37" используется?

Последний раз редактировалось 404; 30.10.2012 в 09:20.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 30.10.2012, 02:27   Вверх   #322
aleksashka7011
Мужской Новенький
 
Регистрация: 29.10.2012
404

Использоваться будет для сравнения.

Дано: 3 файла представленные разными постредниками, в них таблицы... Названия стольбцов в таблицах одинаковые: Название_компании/Номер_страны/Номер_компании/Цена , а вот данные представлены в различных форматах...

Задача:
Сравнить цены предлагаемые разными посредниками на услуги той-же компании.

Я собыраюсь перекинуть таблицы на разные листы одного файла, найти соответствия по двум столбцам Номер_страны/Номер_компании и сравнить Цены. Вот только для этого нужно привести данные к одинаковому виду... Тут то и встала необходимость изменить записи в ячейках с вот такого вида: 23,52-59,18,64,37 на такой: 23,52,53,54,55,56,57,58,59,18,64,37. Как это сделать я не знаю... Менять нужно обязательно, потому-что если не соответствует одна из цифр то уже неверно, либо она может стоять отдельно...

Заранее спасибо!
aleksashka7011 вне форума  
Ответить с цитированием
Старый 30.10.2012, 11:28   Вверх   #323
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
aleksashka7011
А, "23,52-59,18,64,37" — это перечисление "номеров компаний"?

Ну, можно с помощью такой пользовательской функции-макроса:

Код:
Function FORMAT_CN(s)
  FORMAT_CN = ""
  a = Split(s, ",")
  For i = 0 To UBound(a)
    If InStr(a(i), "-") Then
      b = Split(a(i), "-", 3)
      For x = b(0) To b(1)
        FORMAT_CN = FORMAT_CN & x & ","
      Next x
    Else
      FORMAT_CN = FORMAT_CN & a(i) & ","
    End If
  Next i
  FORMAT_CN = Left(RTrim(FORMAT_CN), Len(FORMAT_CN) - 1)
End Function
(Последняя строка перед End Function нужна, чтоб не ставилась лишняя запятая в конце записи: "23,52,53...37,". Думаю, вам эта запятая безразлична, тогда это строка в макросе не нужна.)

В Excel выбираете меню Сервис — Макрос — Редактор Visual Basic — Insert — Module, появится новый лист "VBAProject (<ваш файл Excel>)" — Modules — Module1, вставляете туда этот код; после чего в ячейках Excel можете использовать функцию =FORMAT_CN(<ссылка на ячейку>).

Последний раз редактировалось 404; 31.10.2012 в 06:16.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 31.10.2012, 06:01   Вверх   #324
aleksashka7011
Мужской Новенький
 
Регистрация: 29.10.2012
404

Да это перечисление номеров компаний...
Спасибо всё работает!

И ещё вопрос: а как сделать так чтобы если ячейка с "номером компании" пустая то результирующая ячейка тоже осталась пустой, а то в ней остаётся вот такая надпись: "#ЗНАЧ!"
aleksashka7011 вне форума  
Ответить с цитированием
Старый 31.10.2012, 06:22   Вверх   #325
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
как сделать так чтобы если ячейка с "номером компании" пустая то результирующая ячейка тоже осталась пустой, а то в ней остаётся "#ЗНАЧ!"
Самый короткий вариант, перед разбором записи из ячейки дописать к ней пробел: a = Split(s & " ", ","). Вам же от лишнего пробела ни жарко, ни холодно?

Либо проверять, что ячейка непустая:
Код:
Function FORMAT_CN(s)
  FORMAT_CN = ""
  If Not s = "" Then
    a = Split(s, ",")
    For i = 0 To UBound(a)
      If InStr(a(i), "-") Then
        b = Split(a(i), "-", 3)
        For x = b(0) To b(1)
          FORMAT_CN = FORMAT_CN & x & ","
        Next x
      Else
        FORMAT_CN = FORMAT_CN & a(i) & ","
      End If
    Next i
    FORMAT_CN = Left(RTrim(FORMAT_CN), Len(FORMAT_CN) - 1)
  End If
End Function
С другой стороны, "#ЗНАЧ!" — это полезная вещь, она отлавливается с помощью =ЕОШИБКА(<ссылка на ячейку>).

P.S. Про "создание цифрового сертификата", чтобы Excel вас всякий раз при открытии файла не предупреждал про макросы, вы сами в интернете почитайте.

Последний раз редактировалось 404; 31.10.2012 в 06:35.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 01.11.2012, 08:16   Вверх   #326
aleksashka7011
Мужской Новенький
 
Регистрация: 29.10.2012
404

Пробелы тоже играют роль, там везде всё по разному, отсюда и сложность (ну по крайней мере для меня)...

Вот теперь всё отлично! Всё работает!

Огромное спаибо!
aleksashka7011 вне форума  
Ответить с цитированием
Старый 22.11.2012, 18:29   Вверх   #327
oleg126
Мужской Новенький
 
Регистрация: 22.11.2012
Подскажите как решить с помощью финансовой функции такую задачу?
Вы внесли на счет в банке 7000 руб. под 14 % годовых. Сколько рублей будет на Вашем счете через 7 лет? Ответ должен выйти 18546 но вот как это получить не пойму никак
oleg126 вне форума  
Ответить с цитированием
Старый 22.11.2012, 18:51   Вверх   #328
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
Цитата (oleg126) »
Вы внесли на счет в банке 7000 руб. под 14 % годовых. Сколько рублей будет на Вашем счете через 7 лет? Ответ должен выйти 18546 но вот как это получить не пойму
Ответ 7000 * 1.14^7 = 17516. Как должно выйти 18546, не пойму.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 22.11.2012, 19:59   Вверх   #329
oleg126
Мужской Новенький
 
Регистрация: 22.11.2012
404 а какой функцией вы это делали? БС?
ПРосто я решил задачи а 5 штук все таки не сходятся с ответом!

1.Вы внесли на счет в банке 7000 руб. под 14 % годовых. Сколько рублей будет на Вашем счете через 7 лет? Ответ: 18546
3.У Вас на депозите 3500 руб., вложенных под 16 % годовых. Сколько времени понадобится, чтобы сумма возросла до 21000 руб.? Ответ: 135,2759
4.У Вашего клиента на депозите 3629 руб., вложенных под 1,1 % ежемесячно. Счет открыт 12 месяцев тому назад. Каков первоначальный размер вклада? Ответ: 3,183
7.У Вас на счете уже 7500 руб. В конце каждого месяца Вы до-бавляете на счет по 300 руб. Сколько денег накопится на счете че-рез 10 лет при 0,7 % за месяц? Ответ: 73447,63
10. Вы инвестировали в строительство бензозаправочной стан-ции 79000 руб. и за следующие четыре года получили прибыль в раз-мерах 19000, 24500, 33000, 19500 руб. соответственно. Рассчитайте величину чис-той приведенной стоимости инвестиции при годовой ставке 4 %. Ответ: 7,622

Вобщем помогите пожалуйста, а то уже всю голову сломал, никак не выходит по ответам что бы все получилось( Буду очень признателен за помощь!
oleg126 вне форума  
Ответить с цитированием
Старый 22.11.2012, 20:34   Вверх   #330
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
Цитата (oleg126) »
а какой функцией вы это делали?
Делал умножением и возведением в степень Ну логарифм ещё понадобится. Это же простые задачи:

1) 7000 * 1.14^7 = 17516 руб.

3) 3500 * 1.16^t = 21000; следовательно t = LOG(21000/3500, 1.16) = 12.0722 лет, или LOG(21000/3500, 1.16) *12 = 144.867 месяцев

4) x * 1.011^12 = 3629; следовательно x = 3962/(1.011^12) = 3475 (P.S. Заявленный ответ 3,183 явно абсурден.)

Добавлено через 1 час 20 минут

7) Тут получается степенной ряд:
(...((7500*1.007 + 300)*1.007 + 300)*1.007 + ...)*1.007 + 300 =
= 7500*1.007^120 + 300 * Cумма(1.007^n, n = 0..119).

В Excel последовательность чисел от 1 до 120 можно записать таким извратным способом, через "формулу диапазона": {=СТРОКА(A1:A120)}.
В итоге ваша формула будет выглядеть так:
{=7500*1.007^120 + 300*СУММ(1.007^(СТРОКА(A1:A120)-1))}
Как вводить "формулу диапазона": набираете её в ячейке без фигурных скобок в начале и конце, и нажимаете Ctrl + Shift + Enter.

Туплю, есть же простая формула: Cумма(x^n, n = 0..N–1) = (x^N – 1)/(x – 1).
Поэтому ваша итоговая формула:
=7500*1.007^120 + 300*(1.007^120 - 1)/(1.007 - 1)

Результат: 73447.63 — сходится.

10) Не знаю перевод с японского на русский термина "чистая приведенная стоимость инвестиции", искать лень.

Последний раз редактировалось 404; 23.11.2012 в 06:42.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 22.11.2012, 21:56   Вверх   #331
oleg126
Мужской Новенький
 
Регистрация: 22.11.2012
Ну если препод не будет проверять как это все сделано то здорово, конечно если посмотрит заставит делать все по функциям. Но все равно огромное спасибо за помощь!!!
oleg126 вне форума  
Ответить с цитированием
Старый 23.11.2012, 08:47   Вверх   #332
aleksashka7011
Мужской Новенький
 
Регистрация: 29.10.2012
Таблица соответствия

Добрый день! Очень нужна ваша помощь… Есть файл состоящий из 3х листов на каждом из листов таблица. В приложении выкладываю пример. Получилось глуповато, но сам документ выложить не могу, он для внутреннего пользования.

Опишу смысл этих таблиц:
Есть три разные компании, которые поставляют фрукты. Данные в этих таблицах представлены в немного разных видах. Наиболее совпадающими столбцами являются «КОД» и «НОМЕР». Нужно составить таблицу соответствия, чтобы все три таблицы были на одном листе и одинаковые сорта фруктов стояли в таблице на одной и той-же строке. Плюс еще нужно выписать те данные, где цена меньше. В примере во вкладке "ИТОГ" сделал вручную то, что необходимо получить... Оригинальные таблицы содержат порядка 800 строк...
Вся загвоздка в том что столбцы «НОМЕР» не точно совпадают в разных таблицах
Есть еще такой момент: если, допустим, поступают фрукты с номером которого нет в указанных тогда «ЦЕНА» указывается из той строки в которой ячейка «НОМЕР» пустая.
Замучился уже голову ломать над этим вопросом…
Вложения
Тип файла: 7z Пример1.7z (11.9 Кб, 208 просмотров)
aleksashka7011 вне форума  
Ответить с цитированием
Старый 23.11.2012, 12:19   Вверх   #333
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
Нужно составить таблицу соответствия, чтобы… одинаковые сорта фруктов стояли на одной и той-же строке
Формализуйте точно критерий "одинаковости". Я так понял: точное совпадение номеров + наличие хотя бы одной совпадающей цифры в перечне кодов? Но тогда у вас одной строке с листа "Компания 1" может соответствовать несколько строк с листа "Компания 2" и т. п.

Конечная задача какая?
Как я понимаю: в магазин поступает товар с кодом K и номером N (одно число?). Нужно выбрать для него минимальную розничную цену, исходя из данных на листах Компания1..3?
Если так, для этого не нужна "Таблица соответствия"; а нужна собственно функция, которая берёт номер и код, просматривает листы "Компания 1..3" и выдаёт минимальную цену.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 26.11.2012, 07:35   Вверх   #334
aleksashka7011
Мужской Новенький
 
Регистрация: 29.10.2012
По идее одной строке из листа «Компания 1» должна соответствовать только одна строка из листов «Компания 2» и «Компания 3». Либо ни одной строки. Можно ли этого добиться?
А вот такой случай. Есть две строки:

КОД НОМЕР
45 20
45 70, 35, 320, 700

Будут ли они считаться одинаковыми?
Цитата
Конечная задача какая?
Как я понимаю: в магазин поступает товар с кодом K и номером N (одно число?). Нужно выбрать для него минимальную розничную цену, исходя из данных на листах Компания1..3?
Если так, для этого не нужна "Таблица соответствия"; а нужна собственно функция, которая берёт номер и код, просматривает листы "Компания 1..3" и выдаёт минимальную цену.
Да, конечная задача именно такая. Данные поступают в виде двух чисел КОД и НОМЕР. Получается, что «Таблица соответствия» не нужна… Каким образом можно реализовать нужную мне функцию?
aleksashka7011 вне форума  
Ответить с цитированием
Старый 26.11.2012, 09:51   Вверх   #335
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
Каким образом можно реализовать
Перво-наперво вам нужна функция, которая сообщает, принадлежит ли число x к списку s вида "150; 155-157; 163, 177, 178":
Код:
Function BELONG(ByVal x As Integer, s As String)
  BELONG = False
  a = Split(Replace(s, ";", ","), ",")
  For i = 0 To UBound(a)
    If InStr(a(i), "-") Then
      b = Split(a(i), "-", 3)
      BELONG = x >= b(0) And x <= b(1)
    Else
      BELONG = x = a(i)
    End If
    If BELONG Then Exit For
  Next i
End Function
Дальше надо просмотреть лист на предмет совпадения кодов и "принадлежности" номеров и найти номер строки, в которой стоит минимальная цена. Разберётесь дальше? Справку по VBA используйте.

Последний раз редактировалось 404; 26.11.2012 в 09:54.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 29.11.2012, 19:45   Вверх   #336
melnika
Женский Начинающий
 
Регистрация: 02.04.2012
Объясните, почему при выделении любой ячейки столбца M виснет программа? Что тогда делать? Пожалуйста, срочно!

Пока ввела дополнительный столбец, работаю так, но основной проблемы это не решает.

Последний раз редактировалось melnika; 29.11.2012 в 20:09.
melnika вне форума  
Ответить с цитированием
Старый 29.11.2012, 21:22   Вверх   #337
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
Цитата (melnika) »
Что тогда делать?
Попробуйте отключить макросы, для начала.
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 29.11.2012, 23:30   Вверх   #338
melnika
Женский Начинающий
 
Регистрация: 02.04.2012
Цитата (404) »
Попробуйте отключить макросы, для начала.
Их здесь нет.
melnika вне форума  
Ответить с цитированием
Старый 30.11.2012, 00:55   Вверх   #339
404
Мужской Умудрённый
 
Регистрация: 04.08.2003
melnika
Есть ли в формулах циклические ссылки?
Есть ли какие-то особо ресуроёмкие формулы (многократный просмотр больших диапазонов и т. п.)?
Установлены ли какие-то программы, работающие с буфером обмена: PuntoSwitcher, словари, переводчики и т. п.
Включена ли защита листа?
Включён ли ScrollLock?
Наконец, можно банально попробовать переустановить MS Office…
404 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 30.11.2012, 06:23   Вверх   #340
aleksashka7011
Мужской Новенький
 
Регистрация: 29.10.2012
Цитата
Дальше надо просмотреть лист на предмет совпадения кодов и "принадлежности" номеров и найти номер строки, в которой стоит минимальная цена. Разберётесь дальше? Справку по VBA используйте.
Добрый день! Самому справится сосвем не получается. У меня даже не хватает ума)) понять каким образом использовать эту формулу, т.к. она выбирает только ОДНО число... Вобщем без Вас никак...
aleksashka7011 вне форума  
Ответить с цитированием
Ответ Создать новую тему

Метки
excel


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

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

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


Текущее время: 03:57. Часовой пояс GMT +3.


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