Автор | Сообщение |
|
| постоянный участник
|
Пост N: 4144
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.04.15 22:50. Заголовок: Вопрос по Excel ?
Всем привет. Вопрос к знатокам Excel-я, как подсчитать сумму ВСЕХ значений с минусом и с плюсом ? Вот есть таблица из многих столбцов. Как сделать формулу для расчёта этих значений по 2-му столбцу ?
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
All
[см. все]
|
|
|
| |
Пост N: 1810
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.11.21 16:33. Заголовок: Haz пишет: Согласен..
Haz пишет: цитата: | Согласен с твоим спинным мозгом, не поспоришь |
| Забыл написать. Свойство NAME у объекта книга только чтение
|
|
|
|
| постоянный участник
|
Пост N: 7132
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.11.21 19:22. Заголовок: alex_II пишет: Печа..
alex_II пишет: цитата: | Печатая отчёты через Excel потребовалось поменять имя книги Книга1 на своё, но так и не разобрался как. Подскажите, кто сталкивался с этой задачей. |
| Тема Снова EXCEL (продолжение) http://clipper.borda.ru/?1-4-0-00001115-000-260-0-1628243986 Вот с этим я разобрался: Сделал тест, кому будет интересно: oExcel:WorkBooks:Add() oExcel:Visible := .T. oBook := oExcel:ActiveWorkBook oSheet := oExcel:ActiveSheet() oSheet := oBook:Sheets(2) oSheet:name := "МОЁ_НЕ_ТРОГАТЬ!" // имя листа изменить nCnt := oBook:Sheets:Count // количество листов в книге cMsg := "Количество листов в книге = " + HB_NtoS(nCnt) + ";" FOR EACH oSheet IN oBook:WorkSheets cMsg += oSheet:Name + ";" NEXT cMsg := StrTran(cMsg, ";", CRLF ) MsgInfo(cMsg) oSheet:Cells:Font:Name := "Arial" oSheet:Cells:Font:Size := 12 oSheet:Cells( 3, 1 ):Value := "City:" oSheet:Cells( 3, 2 ):Value := "Moskow" ....... // далее запись во 2 лист oSheet:Visible := .F. // скрыть лист 2 oBook:Sheets(3):Select() // перейдём на 3 лист oSheet := oExcel:ActiveSheet() oSheet:Visible := .F. // скрыть лист 3 oBook:Sheets(1):Select() // вернутся на 1 лист oSheet := oExcel:ActiveSheet() oSheet:name := "Мой_отчёт" // имя листа изменить ...........
|
|
|
|
| |
Пост N: 7485
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.11.21 19:47. Заголовок: Haz пишет: Свойство..
Haz пишет: цитата: | Свойство NAME у объекта книга только чтение |
| Но если хочется сменить заголовок окна Excel то можно сделать так. local oExcel, oWorkBook, oWindows local nI, nCount, w , oSheet REQUEST HB_CODEPAGE_RU1251 hb_cdpSelect( "RU1251" ) oExcel := win_oleCreateObject( "Excel.Application" ) if !empty(oExcel) ? oExcel:version oSheet := oExcel:ActiveSheet() ? oExcel:hwnd oWindows := oExcel:Windows() oWorkBook := oExcel:WorkBooks:Add() nCount := oWindows:Count oWindows[1]:Caption := "Блабла" + hb_NtoS( nCount ) for each w in oWindows ? w:caption ? oExcel:hwnd next oExcel:Visible := .T. else ? "Error: MS Excel not available. [" + win_oleErrorText() + "]" endif
|
|
|
|
| постоянный участник
|
Пост N: 7133
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.11.21 19:56. Заголовок: Dima пишет: Но если..
Dima пишет: цитата: | Но если хочется сменить заголовок окна Excel то можно сделать так. |
| Классно ! А я не знал что так тоже можно !
|
|
|
|
| |
Пост N: 1811
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.11.21 22:16. Заголовок: Dima пишет: Но если..
Dima пишет: цитата: | Но если хочется сменить заголовок окна |
| Полезно
|
|
|
|
| |
Пост N: 159
Зарегистрирован: 12.07.06
|
|
Отправлено: 21.11.21 06:13. Заголовок: Как переименовать книгу?
Всем спасибо за внимание, но похоже проблема решения не имеет. Вариант через сохранение файла не подходит.
|
|
|
|
| постоянный участник
|
Пост N: 1730
Зарегистрирован: 09.10.06
|
|
Отправлено: 21.11.21 13:06. Заголовок: alex_II пишет: Всем..
alex_II пишет: цитата: | Всем спасибо за внимание, но похоже проблема решения не имеет. Вариант через сохранение файла не подходит. |
| Из Википедии (куда без нее ) Решение — завершение процесса выбора, которое обычно ( иногда неправильно) фиксирует процесс во времени. Принятие решения рассматривается как когнитивный процесс, результатом которого является выбор мнения или курса действий среди нескольких альтернативных возможностей. Еще одна альтернативная возможность с использованием пользовательского шаблона цитата: | procedure main(...) local oExcel, oWorkBook local cTPath local cTDir := "tmplts", cTName := "EBook.xltx" oExcel := win_oleCreateObject("Excel.Application") if !empty(oExcel) ? oExcel:Version cTPath := hb_DirSepAdd(hb_DirBase() + cTDir) oWorkBook := oExcel:WorkBooks:Add(cTPath + cTName) oExcel:Visible := .T. else ? "Error: MS Excel not available. [" + win_oleErrorText() + "]" endif return NIL |
| В рабочем каталоге есть вложенная папка tmplts, а в ней - шаблон EBook.xltx. Открытая книга будет иметь имя EBook1. Как создать шаблон в Эксель думаю знают все.
|
|
|
|
| |
Пост N: 1812
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.11.21 17:25. Заголовок: Петр пишет: В рабоч..
Петр пишет: цитата: | В рабочем каталоге есть вложенная папка tmplts, а в ней - шаблон EBook.xltx. Открытая книга будет иметь имя EBook1. |
| Есть такой вариант, но если проблема только уйти от имени Книга(1...n) на свое, то ничем не отличается от сохранения. Этот Ебук тоже лежит на диске, а если хочется иметь множество своих имен , то и шаблонов будет много. alex_II пишет: цитата: | Вариант через сохранение файла не подходит. |
| По мне, проще сохранять при старте с любым именем и тереть при завершении , если нужно то сохранять результат работы уже куда и как положено. Хотя чем имя Книга1 не устраивает то ? и почему сохранение не подходит ?
|
|
|
|
| постоянный участник
|
Пост N: 1731
Зарегистрирован: 09.10.06
|
|
Отправлено: 21.11.21 18:55. Заголовок: Haz пишет: Есть так..
Haz пишет: цитата: | Есть такой вариант, но если проблема только уйти от имени Книга(1...n) на свое, то ничем не отличается от сохранения. |
| Вы ничего не понимаете, ЭТО ДРУГОЕ! А если серьезно, то alex_II пишет: цитата: | Печатая отчёты через Excel потребовалось поменять имя книги Книга1 |
| Вот отчеты, особенно сложные, для меня удобнее писать через шаблоны. Формулы, макросы, диаграммы.. Haz пишет: цитата: | Этот Ебук тоже лежит на диске, а если хочется иметь множество своих имен , то и шаблонов будет много |
| Разные отчеты - разные шаблоны. А если что, то и Ебук можно переименовывать перед употреблением.
|
|
|
|
| |
Пост N: 1813
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.11.21 20:07. Заголовок: Петр пишет: Вы ниче..
Петр пишет: цитата: | Вы ничего не понимаете, ЭТО ДРУГОЕ! |
|
Для чего нужны шаблоны я догадываюсь уже второй десяток лет хотя сам почти не использую, впрочем как и ole из за его тормознутости ( при выводе нескольких тысяч строк реестра можно идти спать ) Насколько я понял, Alex_ll их не использует, а вот тему с сохранением я не понял. Почему она не подходит не пойму. Создал Эксель, сохранил сразу как надо, через ту же Олю заполнил, если нужно пересохранил, не нужно удалил. Единственное что может доставить неудобство, так это то, что при закрытии программы Эксель еще висит у пользователя в работе. Но ведь сохраняем изначально во временной папке и при старте просто трем в ней все , что удается стереть ( можно с проверкой на блокировку )
|
|
|
|
| |
Пост N: 7486
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.11.21 20:27. Заголовок: Haz пишет: при выво..
Haz пишет: цитата: | при выводе нескольких тысяч строк реестра можно идти спать |
| Ты не прав Игорь , тоже был такой тормозок и решил его с помощью oRange:Value := __oleVariantNew( WIN_VT_VARIANT, ...... ну ты понял :) Сейчас отчётик строится на раз два , два даже произнести не успеваю ))
|
|
|
|
|
| |
Пост N: 7487
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.11.21 20:57. Заголовок: Haz 100 000 строк н..
Haz 100 000 строк нормально будет ? #include "hbole.ch" local oExcel, oWorkBook, oWindows local nI, nCount, w , oSheet local orange,orange1,orange2 local xlsarrrow:={} local nrows:=100000 REQUEST HB_CODEPAGE_RU1251 hb_cdpSelect( "RU1251" ) oExcel := win_oleCreateObject( "Excel.Application" ) if !empty(oExcel) oWorkBook := oExcel:WorkBooks:Add() oSheet := oExcel:ActiveSheet() oRange := oSheet:Range(oSheet:Cells(1, 1), oSheet:Cells(nrows, 2)) oRange1 := oSheet:Range(oSheet:Cells(1, 1), oSheet:Cells(nrows, 1)) oRange2 := oSheet:Range(oSheet:Cells(1, 2), oSheet:Cells(nrows, 2)) for ni=1 to nrows aadd(xlsarrrow,{hb_ntos(ni),hb_milliseconds()}) next oRange:Value := __oleVariantNew( WIN_VT_VARIANT, xlsarrrow, nrows, 2 ) oRange2:Font:Size := 12 oRange1:Font:Size := 8 oRange2:NumberFormat:="# ##0" oExcel:Visible := .T. else ? "Error: MS Excel not available. [" + win_oleErrorText() + "]" endif PS Мне кажется что hbxlsxml.lib будет нервно курить в сторонке при таком объеме данных + форматирование
|
|
|
|
| |
Пост N: 1814
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.11.21 21:57. Заголовок: Dima пишет: тоже бы..
Dima пишет: цитата: | тоже был такой тормозок и решил его с помощью oRange:Value := __oleVariantNew |
| В километровых отчетах финансисты желают видеть формулы а не значения. И базовые параметры ( курсы, пошлины, ставки налогов и пр выносить в шапку ) Для таких игр вариант-массив не катит.
|
|
|
|
| |
Пост N: 7488
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.11.21 22:00. Заголовок: Haz формулы (я не ю..
Haz формулы (я не юзал) можно в массив загнать ?
|
|
|
|
| |
Пост N: 1815
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.11.21 22:00. Заголовок: Dima пишет: Мне каж..
Dima пишет: цитата: | Мне кажется что hbxlsxml.lib будет нервно курить в сторонке при таком объеме данных + форматирование |
| Только кажется Текстовой вывод в файл очень быстрый, современные диски сам знаешь с какой скоростью пишут. Подготовка и вставка большого массива точно не быстрее.
|
|
|
|
| Администратор
|
Пост N: 4049
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.11.21 08:47. Заголовок: alex_II пишет: Всем..
alex_II пишет: цитата: | Всем спасибо за внимание, но похоже проблема решения не имеет. Вариант через сохранение файла не подходит. |
| Есть простой критерий, чтобы определить, есть решение или нет. Открываем Excel, создаем новую книгу. Меняем название книги без ее сохранения. Что, не получается ? Так отож
|
|
|
|
| Администратор
|
Пост N: 4050
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.11.21 08:52. Заголовок: Dima пишет: формулы..
Dima пишет: цитата: | формулы (я не юзал) можно в массив загнать ? |
| В документации написано, что можно Для Range:Formula допускается присвоение массива: If the range is a one- or two-dimensional range, you can set the formula to a Visual Basic array of the same dimensions. Similarly, you can put the formula into a Visual Basic array. Setting the formula for a multiple-cell range fills all cells in the range with the formula.
|
|
|
|
| постоянный участник
|
Пост N: 7134
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.11.21 19:20. Заголовок: Dima пишет: формулы..
Dima пишет: цитата: | формулы (я не юзал) можно в массив загнать ? |
| Смотри пример MiniGUI\SAMPLES\Advanced\Tsb_Export_2 Формулы легко загоняются в массив, а далее в эксель:
|
|
|
|
| Администратор
|
Пост N: 4051
Зарегистрирован: 23.05.05
|
|
Отправлено: 23.11.21 10:15. Заголовок: При работе со значен..
При работе со значениями/формулами как говорится "есть ньюанс" Ячейка может иметь либо значение, либо формулу Если заполнять Range массивом значений, то даже если в массиве в тех ячейках, в которых есть формулы стоит nil, формулы будут снесены
|
|
|
|
| |
Пост N: 326
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.11.21 12:43. Заголовок: Dima пишет: oRange:..
Dima пишет: цитата: | oRange:Value := __oleVariantNew( WIN_VT_VARIANT, ...... |
| этот механизм работает в OpenOffice ?
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
All
[см. все]
|
|