IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Обсуждение программ (http://www.imho.ws/forumdisplay.php?f=3)
-   -   Microsoft Excel: Вопросы и ответы (http://www.imho.ws/showthread.php?t=26600)

Hubbitus 06.04.2010 00:50

Покажите файл. Не понятно что значит расстояние между строками, но без пустых строк...

earcher 06.04.2010 02:23

Цитата:

Сообщение от Hubbitus (Сообщение 1704610)
но без пустых строк...

не писал я такого. внимательнее.

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

p.s. куда ещё понятнее и так всё разжевал уже)

Цитата:

Сообщение от Hubbitus (Сообщение 1704610)
Покажите файл.

мдааааа

Alex Dark 06.04.2010 06:45

Цитата:

Сообщение от earcher (Сообщение 1704618)
p.s. куда ещё понятнее и так всё разжевал уже)

Спокойнее. Ты в "своем котле варишься" давно, а совета спрашиваешь у людей не имеющих представления ни о тебе ни о том чем ты занимаешься и тем более для чего.

PS Почитай внимательно первый пост. Если просят файл, значит он нужен


Тебе нужно делать бирки.
1. границу меджду строк делай из двойной линии у тебя получится вместо
-------
| 1 |
-------
| 2 |
-------
| 3 |
-------
вот так
-------
| 1 |
======
| 2 |
======
| 3 |
-------
и после работы с ножницами получишь
-------
| 1 |
------
и
------
| 2 |
-------


2. макросом. встань в ячейку с нее всё и начнется. Если в ячейку А1 напишешь цифру (например 10, подберешь сам нужную величину) то сможешь регулировать расстояние между строк.
И самое главное. Работать будет до первой пустой ячейки в колонке на которую встанешь

Код:

Sub макрос()
    r = ActiveCell.Row
    c = ActiveCell.Column
    r1 = r
    Do While Not IsEmpty(Cells(r1, c).Value)
        ActiveSheet.Rows(r1 + 1).Select
        Selection.Insert Shift:=xlDown
        If IsNumeric(Cells(1, 1).Value) Then
            If (Cells(1, 1).Value) > 0 Then
                Selection.RowHeight = Cells(1, 1).Value
            End If
        End If
        r1 = r1 + 1
        r1 = r1 + 1
    Loop
End Sub


earcher 06.04.2010 11:08

ок. отлично. спасибо.
один момент.
можно сделать чтоб он добавлял эти самые пустые строки, и при этом бока у этих строк были без "Границы"?

То есть сейчас так:

до:

-----
| 1 |
-----
| 2 |
-----

после:

-----
| 1 |
-----
|....|
-----
| 2 |
-----

а нужно чтоб было так:

до:

-----
| 1 |
-----
| 2 |
-----

после:

-----
| 1 |
-----
....
-----
| 2 |
-----

p.s. .... - пустая строка

Alex Dark 06.04.2010 11:40

добавь в код три строки
Код:

        Selection.Insert Shift:=xlDown
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeRight).LineStyle = xlNone
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
        If IsNumeric(Cells(1, 1).Value) Then


earcher 06.04.2010 16:08

отлично. спасибо.

ещё такой вопрос. в моей таблице два столбца и около 2000 строк. 1 столбец = ширине страницы.

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

То есть, как сделать чтоб номерация страниц считалась не так:

A | B
1 | 362
|
2 | 363
|
3 | 364

а так:

A | B
1 | 2
|
3 | 4
|
5 | 6

Alex Dark 07.04.2010 06:45

ничего не понял...

Но если не задумываться над написаным, то ...
Цитата:

Сообщение от earcher (Сообщение 1704669)
Если мне нужно напечатать второй столбец (B),

выдели нужную колонку, скажи файл, область печати, задать.
И печатай.

Evgeshka 10.04.2010 18:37

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

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

Alex Dark 12.04.2010 06:30

Цитата:

Сообщение от Evgeshka (Сообщение 1705094)
кто знет, как автоматом вставлять пустую строку между разными числами в одной колонке, тоесть разделять.

Думаю сделать это можно только при помощи макроса на основе макроса в посте 683.

eap 28.04.2010 09:55

Поставил замдиректору 2007 Эксель. Он привык к 2003, знает все быстрые клавиши. В 2007 они не совпадают. Когда нажимает привычную комбинацию - выскакивает сообщение, что это быстрая клавиша от 2003 Офиса. Можно ли их как-то вернуть - чтобы работали на 2007 Excel'е клавиши от 2003? Все сразу вернуть, не по одной прописывать?

Sportvlad 30.04.2010 08:23

Цитата:

Сообщение от Evgeshka (Сообщение 1705094)
кто знет, как автоматом вставлять пустую строку между разными числами в одной колонке, тоесть разделять. речь идёт о 10-значных числах, которые идут по порядку от меньшего к большему. Мне нужна пустая строка, чтобы было визуальное пространство между каждой группой одинаковых чисел.

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

Можно попробовать такой прием.
Основная мысль приема - добавить служебный столбец, в котором расположить частное от деления чисел пользователя на друга по порядку сверху вниз. Во всех строках служебного столбца, где частное не равно единице, нужно вставять пустую строку.
Допустим, числа расположены в столбце А, начиная с A1. Тогда в ячейке B2 ставим формулу =A2/A1 и протягиваем формулу вниз. Т.е. в ячейке B3 будет формула =A3/A2 и т.д.
Затем фильтруем по служебному столбцу и оставляем все числа, кроме единицы.
Вставляем пустую строку после каждого числа в служебном столбце.
Снимаем фильтр и удаляем служебный столбец.
Результат получен!

Dr.Dre 03.06.2010 21:16

Пожалуйста подскажите как организовать такую вещь:
В список добавляется строка, в одной ячейки строки стоит дата, а в другой число. Необходимо чтобы каждую неделю в ячейку число добавлялось +0.1

Просто вот так тупо, чтобы программа проверяла текущую дату и если прошла неделя то прибавила к числу +0.1

EvroStandart 04.06.2010 12:22

Неделя прошла после чего?
С начала нужно вычеслить даты. Потом подставить результат в функцию IF

ЗЫ
Формулировка "каждую неделю" непонятна. Можно проверять что текущий день понедельник. "каждую неделю" проверить невозможно.

Georgen 04.06.2010 13:15

Цитата:

Сообщение от Dr.Dre (Сообщение 1711575)
Пожалуйста подскажите как организовать такую вещь

Может проще добавить еще одну результирующую ячейку с формулой
Код:

=((ЦЕЛОЕ((ТДАТА()-ячейка с датой)/7))*0,1+ячейка со значением)
Формат - числовой.

Alex Dark 07.06.2010 11:52

Dr.Dre, ты явно чего то не додумал

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

__ Дата __|_результат__
01.01.2010 2,20
02.01.2010 2,20
03.01.2010 2,20
04.01.2010 2,10
05.01.2010 2,10
06.01.2010 2,10
07.01.2010 2,10
08.01.2010 2,10
09.01.2010 2,10
10.01.2010 2,10
17.05.2010 0,20
18.05.2010 0,20
19.05.2010 0,20
20.05.2010 0,20
21.05.2010 0,20
22.05.2010 0,20
23.05.2010 0,20
24.05.2010 0,10
25.05.2010 0,10
26.05.2010 0,10
27.05.2010 0,10
28.05.2010 0,10
29.05.2010 0,10
30.05.2010 0,10
31.05.2010 0,10
01.06.2010 0,00
02.06.2010 0,00
03.06.2010 0,00
04.06.2010 0,00
05.06.2010 0,00
06.06.2010 0,00
07.06.2010 0,00


ну а это формула
Код:

=ЦЕЛОЕ(ДНЕЙ360(B3;ТДАТА();ИСТИНА)/7)*0,1
где В3 - ячейка с датой
соответственно высчитывает разницу между сегодняшним днем и датой и умножает на 0,1

Afed 09.06.2010 00:28

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

Borland 09.06.2010 01:06

Цитата:

Сообщение от Afed (Сообщение 1712199)
можно ли как-нить это упростить, чтобы выполнялось по нажатию одной кнопки?

Можно. Путём написания VBA-макроса и навешивания его на соответствующую кнопку.
Макрос пишется под конкретную таблицу...

Badger 10.06.2010 23:46

Цитата:

Сообщение от Afed (Сообщение 1712199)
есть куча таблиц в тексте, делается эспорт в ексель, и там нужно сделать сортировку всей таблицы по одному из столбцов. можно ли как-нить это упростить, чтобы выполнялось по нажатию одной кнопки?

Цитата:

Сообщение от Borland (Сообщение 1712206)
Можно. Путём написания VBA-макроса и навешивания его на соответствующую кнопку.

Для быстрого создания скрипта сортировки можно использовать макрорекордер в Excel. Для Excel 2003: выбрать команду "Сервис-Макрос-Начать запись" - задать имя макроса - для начала записи макроса необходимо нажать кнопку "ОК" -далее выделить нужные для сортировки столбцы - далее настроить нужную сортировку + выполнить другие действия по обработке данных таблицы - далее "Сервис-Макрос-Остановить запись". Этот способ очень удобен, когда нужно быстро создать скрипт для обработки нескольких одинаковых таблиц.

Lover_N001 19.06.2010 22:01

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

[table]14.06.2010<br>30.06.2010[/table]
Нужно переделать вот в такую:

[table]14.06.2010-30.06.2010[/table]
В книге 600 страниц, в каждой странице как минимум 10 таких ячеек...

EvroStandart 21.06.2010 12:38

=SUBSTITUTE(A1;"<br>";"-")

Это если простой вариант. Для полной автоматизации нужно макрос писать.

Lover_N001 01.07.2010 15:44

ЕвроСтандарт, <br> это я написал, хотел показать, что в ячейке одна дата находится под другой, то есть использовали Алт+Ентер.
Если бы я виел <br> самый простой способ был бы команда Реплаце

EvroStandart 02.07.2010 10:58

=SUBSTITUTE(A2;CHAR(10);"-")

•DimON• 17.07.2010 13:51

Друзья, прошу помощи в построении диаграммы с конкретными условиями как она должна выглядеть.

Условие для диаграммы:
1. ось Y должна быть одна для показаний кол-ва "купили" и "продали"
2. показания "продали" должны быть смещены к правому краю, как показано на схеме диаграммы

Выглядеть должно вот так
http://s001.radikal.ru/i194/1007/27/02af16000274t.jpg

Возможно ли получить желаемое средствами Excel и если "да", то как?

Очень надеюсь на вашу помощь и заранее спасибо всем откликнувшимся!

Alex Dark 19.07.2010 09:51

Вложений: 1
Ну в общем то пырцаешь кнопатулину "Мастер диаграмм" или Вставка-Диаграмма, а дальше отвечаешь на вопросы

PS у меня получилось очень похоже на твою, кроме вложенных столбцов. Если это не принципиально....

Рыжичек 31.08.2010 10:06

Здравствуйте! Подскажите пожалуйста, как закреплять ячейки, чтобы при прокрутке вправо, самый первый столбец А всегда оставался на экране, а все остальное сдвигалось?

Georgen 31.08.2010 10:58

Цитата:

Сообщение от Рыжичек (Сообщение 1721327)
Подскажите пожалуйста, как закреплять ячейки, чтобы при прокрутке вправо, самый первый столбец А всегда оставался на экране

Встать на ячейку B1 и нажать закрепить области ;)

BeLZeBuT 30.12.2010 12:55

Добрый день всем!
такая задача. Есть колонка с датами но в неудобном формате типа:
301110 - что означает 30 ноября 2010 года
нужно перевести на человеческий 30.11.10

заранее благодарен.

всех с праздниками!!!

Alex Dark 30.12.2010 14:05

под рукой экселя нет...

А формат дата поставить?

добавлено через 4 минуты
можно ещё формулой перевести в дату что то типа

=DATE(MID(A13;1;2);MID(A13;3;2);MID(A13;5;4))

PavelKraft 30.12.2010 14:06

Цитата:

Сообщение от Alex Dark (Сообщение 1733636)
под рукой экселя нет...
А формат дата поставить?

Excel посчитает это как количество дней, которые прошли с 01.01.1900 года, т.е. получится 29.05.2724 года.

Цитата:

Сообщение от Alex Dark (Сообщение 1733636)
добавлено через 4 минуты
можно ещё формулой перевести в дату что то типа

=DATE(MID(A13;1;2);MID(A13;3;2);MID(A13;5;4))

Он тогда наоборот считает. Получается 10.11.1930

А если поставить =ДАТА(ПСТР(A13;5;2);ПСТР(A13;3;2);ПСТР(A13;1;2))

то получается 30.11.1910. Надо как-то ему объяснить что век уже 21-й

Alex Dark 30.12.2010 20:57

Цитата:

Сообщение от PavelKraft (Сообщение 1733641)
Надо как-то ему объяснить что век уже 21-й

Зачем объяснять. Он вроде не на столько туп что-бы не понять 2010

Просто я в опенОфисе смотрел, у него там видать всё для людей сделано.

PavelKraft 30.12.2010 22:22

У меня данная формула и в Excel 2003 и в Excel 2007 выдает один результат: 30 ноября 1910 г.
Если привести к виду: 30.11.10 то как бы 10 год, но это 1910, а не 2010. :idontnow:

Alex Dark 31.12.2010 08:31

Опс...
PavelKraft, я немного ошибся рисуя формулу.

правильная формула (т.е. аналогична твоей)
=DATE(MID(A5:A5;5;2);MID(A5:A5;3;2);MID(A5:A5;1;2) )

В ячейке А5 значение "301110"
Результат 30.11.10

ни каких дополнительных действий не производил, только применил формат DD.MM.GGGG и получил результат
30.11.2010

т.о. опенОфис продуманее.

Хотя в настройках нашёл "интерпретировать как года между" 1930 и 2029. 1930 - настраиваемая дата.
Наверное М.офис эти настройки берёт из настроек винды (Настройка региональных параметров)
PavelKraft, может у тебя там стоит какая то хитрая настройка, поэтому он и интерпретирует дату как 1910 вместо 2010

PavelKraft 31.12.2010 11:17

Проверял несколько раз.
В справке по Excel'ю написано:
Цитата:

Год может иметь от одной до четырех цифр. Microsoft Excel интерпретирует данный аргумент в соответствии с используемой системой дат. По умолчанию в Microsoft Excel для Windows используется система дат 1900, а в Microsoft Excel для компьютеров Макинтош — система 1904.
Совет. Во избежание непредвиденных результатов рекомендуется использовать в качестве аргумента год четыре цифры. Например, при использовании значения "07" год будет интерпретироваться как 1907.
  • Если аргумент год находится в диапазоне от 0 (ноль) до 1899 (включительно), Excel для вычисления года прибавляет это значение к числу 1900. Например, функция ДАТА(108;1;2) возвращает 2 января 2008 (1900+108) года.
  • Если аргумент год находится в диапазоне от 1900 до 9999 (включительно), Excel использует это значение как год. Например, функция ДАТА(2008;1;2) возвращает 2 января 2008 года.
  • Если значение аргумента меньше 0 или больше 9999, Microsoft Excel возвращает значение ошибки #ЧИСЛО!.

А так как в нашем примере в качестве года используеться только два символа, то предлагаю два варианта:

1). Записать в свободную ячейку (например А1) нужный год (например 2010) и использовать формулу =ДАТА(A1;ПСТР(A13;3;2);ПСТР(A13;1;2))
(Где в ячейке А13 записано используемое число формата 301110)

2). Использовать в формуле текущий год компьютера =ДАТА(ГОД(СЕГОДНЯ());ПСТР(A13;3;2);ПСТР(A13;1;2))
(Но это актуально только на текущий год.)

Hubbitus 31.12.2010 14:49

Цитата:

Сообщение от PavelKraft (Сообщение 1733726)
1). Записать в свободную ячейку (например А1) нужный год (например 2010) и использовать формулу =ДАТА(A1;ПСТР(A13;3;2);ПСТР(A13;1;2))
(Где в ячейке А13 записано используемое число формата 301110)

2). Использовать в формуле текущий год компьютера =ДАТА(ГОД(СЕГОДНЯ());ПСТР(A13;3;2);ПСТР(A13;1;2))
(Но это актуально только на текущий год.)

А чего бы просто не добавить к этому числу 2000, форсируя значение???
Как-то так:
Код:

=DATE(MID(A1;5;2)+2000;MID(A1;3;2);MID(A1;1;2))
P.S. Продукта MS нету под рукой, проверял тоже только в OpenOffice Calc.

Alex Dark 12.01.2011 08:30

Джентльмены, вот добрался до экселя, попробовал, почитал. Написано по русски про американские заморочки...
Цитата:

Сообщение от PavelKraft (Сообщение 1733726)
В справке по Excel'ю написано:
Цитата:

...
Если аргумент год находится в диапазоне от 0 (ноль) до 1899 (включительно), Excel для вычисления года прибавляет это значение к числу 1900.
Например, функция ДАТА(108;1;2) возвращает 2 января 2008 (1900+108) года.
...

У нас как раз именно эта ситуация
Проблема (исходя из поставленного ранее условия) решается просто
=ДАТА(ПСТР(A6;5;2)+100;ПСТР(A6;3;2);ПСТР(A6;1;2))
Единственное условие - дата из диапазона начинающегося с 01/01/2000

MrPol 22.02.2011 01:44

Ошибка при запуске модуля построения (редактирования) графика
 
Помогите решить проблему: при запуске модуля диаграм постоянно вылетает ошибка и идёт перезагрузка. Переустановка как Excel отдельно, так и всего пакета офиса ничего не помогает. Перед переустановкой реестр чистил... Пробовал разные версии и никак. Help!!!

PavelKraft 22.02.2011 09:14

MrPol, как минимум надо написать что за ошибка!
И перезагрузка чего? Excel'я или компьютера?
Разные версии чего? Чистилки реестра или Excel?

Опишите проблему более детально! :contract:

MrPol 22.02.2011 09:55

Описание проблемы
 
Цитата:

Сообщение от PavelKraft (Сообщение 1739464)
MrPol, как минимум надо написать что за ошибка!
И перезагрузка чего? Excel'я или компьютера?
Разные версии чего? Чистилки реестра или Excel?

Опишите проблему более детально! :contract:

У меня 2 компа, на одном ХР, а на другом 7. И там и там одна проблема: запускаю Excel, выделяю данные, нажимаю "Мастер диаграм", а дальше: Прекращена работа програмы Мicrosoft Office Excel, Windows осуществляет поиск способа решения этой проблемы. Ну а потом естественно Мicrosoft Office Excel перегружается. В ХР ещё спрашивает: Нужно ли востанавливаться и отсылать сообщение.
Ситуация повторяется, если просто выделить курсором диаграму сделанную ранее - перезагрузка Мicrosoft Office Excel.
Разные версии Мicrosoft Office.
Реестр чистил и вручную и специализировано - удалял всё, что связано с Мicrosoft Officе.
Пока жду ответа, решил попробовать вариант: У меня на W7 стоит мод ХР, и я решил поставить там свой Мicrosoft Office. И тут непонятка - всё работает, можно работать с мастером диаграм. Не знаю надолго ли, но временно решил проблему.
Но всё равно, если кто знает помогите - возможности мода ХР, полностью меня не удовлетворяют - нужна отдельно и севен и рабочая хрюша.

Alex Dark 24.02.2011 07:47

Если у тебя на совершенно разных операционках одна и та же проблема с эхелем, при этом в моде ХР (если я правильно понял это в семерке ты поднял виртуальную машинку, уж извините с семёркой пока не очень дружен) то напрашивается вполне здравый и простой вывод:
"Может, что-то в консерватории исправить?" (М.Жванецкий)
т.е. у тебя вирь сидит или это последствия былого присутствия виря.

Я бы посмотрел журнал событий, ну и на вири проверился.

PS Подобное было давно очень, на 97 офисе. Помогло лечение от вирей, чистка реестра с переустановкой офиса, ну плюс ещё общая чистка системы (ну это я делаю всегда в первую очередь): чистка темпорарей, дефрагментация, скандиск, cCleaner.

Plague 23.03.2011 13:35

задачка такая:
сейчас в макросе
Код:

For block = 9 To 56
......
......
next

нужно разделить сие на чёт/нечёт. Тоесть, чтобы строки 9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55 отрабатывались одним набором комманд, а 10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,5 6 - другим.
Душой чую что тут что-то в плане array рисовать надо, а как это програмно выразить - пока что не догнал.... :idontnow: :help:


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

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.