powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна формула для расчета ширины столбца в Excel
17 сообщений из 17, страница 1 из 1
Нужна формула для расчета ширины столбца в Excel
    #35396417
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ширина столбца измеряется в каких-то условных единицах, зависящих от шрифта и пр.

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

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

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

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

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

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

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

=Ширина

или

=Высота

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна формула для расчета ширины столбца в Excel
    #35399598
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я формирую Excel-файл из внешней программы
- у меня есть значения ширин столбцов в пикселах (можно в твипах - не важно)
- в Excel нужно максимально-приблизительно моим значениям выставить ширину столбцов
с высотой строк проще.
с шириной хуже, т.к. Мелкософт использует 'свои' единицы измерения ширины столбца. Причем какую-либо пропорциональную зависимость вывести сложно. Мне как-то на глаза попадалась формула расчета, но я ее тогда пропустил мимо ушей можно сказать, а теперь не могу найти :/
...
Рейтинг: 0 / 0
Нужна формула для расчета ширины столбца в Excel
    #35399643
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не свои, а стандартные типографские пункты.
...
Рейтинг: 0 / 0
Нужна формула для расчета ширины столбца в Excel
    #35399665
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Нужна формула для расчета ширины столбца в Excel
    #35399682
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Нужна формула для расчета ширины столбца в Excel
    #35400076
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша формула конечно неплохая, но как она мне может помочь?
Я же говорю, что формирую 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
Нужна формула для расчета ширины столбца в Excel
    #35400188
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде нашел что хотел:
http://sources.codenet.ru/download/370/mdlSysMetrics.html
см. функцию WidthExcColToPixel
...
Рейтинг: 0 / 0
Нужна формула для расчета ширины столбца в Excel
    #35400199
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только там небольшие очепятки:
в функции MetricsFont
вместо
If hdc > 0 Then
If lFont > 0
нужно
If hdc <> 0 Then
If lFont <> 0
т.к. эти значения могут быть и отрицательными
а так, все вполне работоспособно.
Огромное Спасибо автору!
...
Рейтинг: 0 / 0
Нужна формула для расчета ширины столбца в Excel
    #35400442
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Нужна формула для расчета ширины столбца в Excel
    #35400450
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если превратить это в прцедуру с параметрами, то это может выглядеть так:

Код: 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
Нужна формула для расчета ширины столбца в Excel
    #35400814
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)О том, что тебе надо устанавливать ты сообщаешь впервые только сейчас
ч-у-уть раньше :)
KrukVN 27 июн 08, 18:42- у меня есть значения ширин столбцов в пикселах (можно в твипах - не важно)
- в Excel нужно максимально-приблизительно моим значениям выставить ширину столбцов
но это не важно

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

Вопрос второй:
- руками выставляю ширину колонки в 280 пикселей (при стандартных: Arial 10 )
- руками выставляю ширину колонки в 280 пикселей (при стандартных: Arial 14 )
вывожу на печать и то и то
результат:
280 пикселей при Arial 10 больше 280 пикселей, что при Arial 14 на 8 мм. :/
Почему?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Нужна формула для расчета ширины столбца в Excel
    #38918581
optimistex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна формула для расчета ширины столбца в Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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