Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна формула для расчета ширины столбца в Excel / 17 сообщений из 17, страница 1 из 1
26.06.2008, 13:57
    #35396417
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Ширина столбца измеряется в каких-то условных единицах, зависящих от шрифта и пр.

Когда тянем границу столбеца влево или вправо, то там же вверху появляется подсказка, типа:
Ширина: 11,00 (82 пиксел)

Так вот вопрос: как все-таки мелкософт это высчитывает?

Кто-нибудь знает секрет формулы? :)
...
Рейтинг: 0 / 0
26.06.2008, 14:02
    #35396440
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Немного поправлюсь:
Нужна формула для перевода Excel-единиц ширины столбца во что либо более внятное
в пикселы например
...
Рейтинг: 0 / 0
27.06.2008, 14:20
    #35398866
W_I_N_T_E_R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
...
Рейтинг: 0 / 0
27.06.2008, 16:35
    #35399270
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Спасибо :)
мне нужно не визуально переводить в пикселы, а программно - при помощи формулы
...
Рейтинг: 0 / 0
27.06.2008, 17:36
    #35399451
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
В точках тебя устроит?

1) создаешь именованные формулы

имя: Ширина
формула: =ПОЛУЧИТЬ.ЯЧЕЙКУ(44;ДВССЫЛ("RC";0))-ПОЛУЧИТЬ.ЯЧЕЙКУ(42;ДВССЫЛ("RC";0))

имя: Высота
формула: =ПОЛУЧИТЬ.ЯЧЕЙКУ(17;ДВССЫЛ("RC";0))

2) в искомой ячейке пишешь:

=Ширина

или

=Высота

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
27.06.2008, 18:42
    #35399598
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Я формирую Excel-файл из внешней программы
- у меня есть значения ширин столбцов в пикселах (можно в твипах - не важно)
- в Excel нужно максимально-приблизительно моим значениям выставить ширину столбцов
с высотой строк проще.
с шириной хуже, т.к. Мелкософт использует 'свои' единицы измерения ширины столбца. Причем какую-либо пропорциональную зависимость вывести сложно. Мне как-то на глаза попадалась формула расчета, но я ее тогда пропустил мимо ушей можно сказать, а теперь не могу найти :/
...
Рейтинг: 0 / 0
27.06.2008, 19:17
    #35399643
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Не свои, а стандартные типографские пункты.
...
Рейтинг: 0 / 0
27.06.2008, 19:47
    #35399665
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
KrukVNЯ формирую Excel-файл из внешней программы
- у меня есть значения ширин столбцов в пикселах (можно в твипах - не важно)
- в Excel нужно максимально-приблизительно моим значениям выставить ширину столбцов
с высотой строк проще.
с шириной хуже, т.к. Мелкософт использует 'свои' единицы измерения ширины столбца. Причем какую-либо пропорциональную зависимость вывести сложно. Мне как-то на глаза попадалась формула расчета, но я ее тогда пропустил мимо ушей можно сказать, а теперь не могу найти :/
Не пойму я тебя :-(

Если с высотой строк - проще, то какие проблемы с шириной?

Формула, которую я тебе дал считает в тех же единицах, что и Высота, т.е. в точках . Точка - единица стандартная и широко используемая в печати. Она не выдумана Microsoft (про dpi слышал?). То же самое значение в VBA возвращают проперти .Width и .RowHeight объекта Range.

Другое дело это формула =ПОЛУЧИТЬ.ЯЧЕЙКУ(16;ДВССЫЛ("RC";0)) или в VBA проперть .ColumnWidth, они возвращают ширину исчисляемую шириной стандартного шрифта, но они тут не при чем.

С другой, стороны точка равняется 1/72 дюйма, что при разрешении дисплея в 72 dpi было бы равно 1 пикселю. Если же разрешение дисплея 60 dpi (что чаще всего), то 60 pixels = 72 points.
Что еще надо-то?

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
27.06.2008, 20:15
    #35399682
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
KL (XL)...Если же разрешение дисплея 60 dpi (что чаще всего), то 60 pixels = 72 points...
Пардон, тут я сам не понял, что написал.

читать надо так:

...Если же плотность разрешения дисплея 96 ppi (что чаще всего), то 96 pixels = 72 points...

Определить можно так:

Код: plaintext
1.
2.
Sub test()
    MsgBox Application.DefaultWebOptions.PixelsPerInch
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
28.06.2008, 11:10
    #35400076
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Ваша формула конечно неплохая, но как она мне может помочь?
Я же говорю, что формирую Excel-файл из внешней программы. У меня есть значения ширин столбцов в пикселах.
Ширину столбца программно можно установить только в Excel-единицах (Columns(n).ColumnWidth = Х)
Но посмотрите, как ведут себя эти единицы при разных установках стандартного шрифта
Код: plaintext
1.
2.
3.
4.
5.
'пиксели 				10 	100 	1000
'точки 					7,5 	75 	750
'Excel (стандартный шрифт - Arial 10)	0,83	13,57	142,14
'Excel (стандартный шрифт - Arial 14)	0,56	8,45	90,27
'Excel (стандартный шрифт - Arial 16)	0,53	7,75	82,75
Так вот как мне установить ширину столбца например в 100 пикселей?
Откуда мне знать сколько это будет в Excel-единицах: 13,57; 8,45; 7,75 или x,xx ???
...
Рейтинг: 0 / 0
28.06.2008, 13:50
    #35400188
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Вроде нашел что хотел:
http://sources.codenet.ru/download/370/mdlSysMetrics.html
см. функцию WidthExcColToPixel
...
Рейтинг: 0 / 0
28.06.2008, 14:03
    #35400199
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
только там небольшие очепятки:
в функции MetricsFont
вместо
If hdc > 0 Then
If lFont > 0
нужно
If hdc <> 0 Then
If lFont <> 0
т.к. эти значения могут быть и отрицательными
а так, все вполне работоспособно.
Огромное Спасибо автору!
...
Рейтинг: 0 / 0
28.06.2008, 20:08
    #35400442
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
KrukVN...Так вот как мне установить ширину столбца...
О том, что тебе надо устанавливать ты сообщаешь впервые только сейчас. До этого речь шла о расчете.

Вот макрос использующий идею Оле Эрландсена (т.е. точная доводка с пом. цикла):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub test()
    Dim intPPI As Integer
    Dim intWidthPx As Integer
    Dim dblWidthDt As Double
    
    Application.ScreenUpdating = False
    intPPI = Application.DefaultWebOptions.PixelsPerInch
    intWidthPx =  1340 
    dblWidthDt = intWidthPx / (intPPI /  72 )
    
    With ActiveSheet.Columns( 3 )
        While .Width > dblWidthDt
            .ColumnWidth = .ColumnWidth -  0 . 1 
        Wend
        While .Width < dblWidthDt
            .ColumnWidth = .ColumnWidth +  0 . 1 
        Wend
    End With
    Application.ScreenUpdating = False
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
28.06.2008, 20:16
    #35400450
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
Если превратить это в прцедуру с параметрами, то это может выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Option Explicit

Sub SetColumnWidthPx(intWidthPx As Integer, rngTarget As Range)
    Dim intPPI As Integer
    Dim dblWidthDt As Double
    Dim col As Range
    
    intPPI = Application.DefaultWebOptions.PixelsPerInch
    dblWidthDt = intWidthPx / (intPPI /  72 )
    
    Application.ScreenUpdating = False
    For Each col In rngTarget.Columns
        With col
            While .Width > dblWidthDt
                .ColumnWidth = .ColumnWidth -  0 . 1 
            Wend
            While .Width < dblWidthDt
                .ColumnWidth = .ColumnWidth +  0 . 1 
            Wend
        End With
    Next col
    Application.ScreenUpdating = False
End Sub

Sub test()
    SetColumnWidthPx  100 , ActiveSheet.Range("C2:F5")
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
29.06.2008, 14:08
    #35400814
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
KL (XL)О том, что тебе надо устанавливать ты сообщаешь впервые только сейчас
ч-у-уть раньше :)
KrukVN 27 июн 08, 18:42- у меня есть значения ширин столбцов в пикселах (можно в твипах - не важно)
- в Excel нужно максимально-приблизительно моим значениям выставить ширину столбцов
но это не важно

Первое что я сделал, это 'нарисовал' приблизительно такой-же метод подгона. Но меня он не устроил своими циклами (не быстро).
Более красивое решение (ИМХО) находится по ссылке что я давал:
http://sources.codenet.ru/download/370/mdlSysMetrics.html
Но, как выяснилось и здесь не все так как хотелос бы. Пришлось немного над этим решением поработать.
...
Рейтинг: 0 / 0
30.06.2008, 14:05
    #35401982
KrukVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
И так. С первым вопросом вроде разобрался. Вывести оригинальный (мелкософтовский) алгоритм перевода 'ихних' единиц в пиксели и наоборот все же не удалось, но что-то очень близкое к тому уже есть. и с этим ладно. Пусть уже так будет.

Вопрос второй:
- руками выставляю ширину колонки в 280 пикселей (при стандартных: Arial 10 )
- руками выставляю ширину колонки в 280 пикселей (при стандартных: Arial 14 )
вывожу на печать и то и то
результат:
280 пикселей при Arial 10 больше 280 пикселей, что при Arial 14 на 8 мм. :/
Почему?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.03.2015, 10:53
    #38918581
optimistex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна формула для расчета ширины столбца в Excel
KrukVNИ так. С первым вопросом вроде разобрался. Вывести оригинальный (мелкософтовский) алгоритм перевода 'ихних' единиц в пиксели и наоборот все же не удалось, но что-то очень близкое к тому уже есть. и с этим ладно. Пусть уже так будет.


Может кому-то поможет?

Работаю с листом Excel (импорт/экспорт).

Вывел формулу расчета ширины колонки в пикселях:

Код: plaintext
1.
2.
3.
4.
int currentDPI = ...; // текущее значение DPI экрана
double ExcelColWidthPoints = ...; // ширина колонки в единицах Excel

int ExcelColWidthPixel = Round(currentDPI * 7.33 / 96.0) * ExcelColWidthPoints; //искомая ширина колонки в пикселях



Эта формула дает максимально точный результат при разных DPI экрана (я рисую таблицу Excel).
Формула актуальна именно для ручной обработки Excel файла!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна формула для расчета ширины столбца в Excel / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]