Dean想知道如何将列宽和行高从像素更改为英寸。他想在Excel中创建标签,并且以英寸为单位指定标签。

在探讨解决此问题的可能方法之前,应指出Excel使用一种奇怪的方法来计算行高和列宽。实际上,行高的计算与列宽的计算完全不同。

行高不是以像素为单位,而是以磅为单位。像素是主要与显示设备(例如监视器和打印机)有关的相对测量单位。如果某个东西的宽度为50像素,那么在不知道设备能够垂直显示多少像素的情况下,该尺寸本身就没有任何意义。

但是,点定义明确-每英寸大约有72个点,因此72行的高度将是一英寸高。简单吧?

现在考虑列宽度,该宽度既不是由像素也不能由点指定。而是以您使用的任何字体的字符宽度指定它。例如,如果您的标准样式设置为Courier 10,则列宽为12意味着您可以在给定的列中恰好容纳12个字符。更改使用的字体,列宽也会突然更改,因此仍可以显示12个字符。

是的,这种方法真是愚蠢。这也使得在Excel中执行诸如设计标签之类的工作变得非常困难。您可能会设计出一些可以在您的系统上运行的东西(经过大量的反复试验),但是如果您将该工作簿转发给朋友,则很有可能在他们的系统上不起作用。为什么?因为字体在其系统上的呈现方式可能与您在系统上呈现的方式完全不同。

坦白地说,处理标签的最佳方法是在Word中进行处理。

您可以将标签数据保留在Excel工作表中,但可以在Word中使用邮件合并来创建实际的标签。与Excel相比,为标签提供的工具更容易,更精确。

如果绝对必须在Excel中执行此操作,则应切换到“页面布局”视图。 (显示功能区的“视图”选项卡,然后单击“工作簿视图”组中的“页面布局”工具。)这将在屏幕上同时显示水平和垂直标尺,您可以将它们用作指导来设置行高和列宽。

在“页面布局”视图中工作还有另一个有趣的副作用:

如果显示功能区的“主页”选项卡并使用命令来设置行高和列宽(来自“格式”工具),则会注意到两者均以英寸为单位指定。如果您切换回普通视图,它们只会返回到荒谬的字符计数列宽度。

如果您更喜欢通过使用宏来设置高度和宽度,则可以找到WidthHeightInches宏指令。

Sub WidthHeightInches()

Dim Temp As String     Dim RInch As Single     Dim CInch As Single     Dim WPChar As Double     Dim c As Range     Dim r As Range

Temp = InputBox("Row height in inches?")

RInch = Val(Temp)

If RInch > 0 And RInch <= 2 Then         Temp = InputBox("Column width in inches?")

CInch = Val(Temp)

If CInch > 0 And CInch <= 3 Then             For Each c In ActiveWindow.RangeSelection.Columns                 WPChar = c.Width / c.ColumnWidth                 c.ColumnWidth = ((CInch * 72) / WPChar)

Next c             For Each r In ActiveWindow.RangeSelection.Rows                 r.RowHeight = (RInch * 72)

Next r         End If     End If End Sub

请记住,列宽是由可水平放置在单元格中的位数指定的。该宏的心脏以磅为单位计算出一位数的宽度。通过将以点为单位的列的宽度(.Width属性)除以以字符为单位的列的宽度(.ColumnWidth属性)来完成此操作。然后,此值用于计算该列应为多少宽度才能成为所需的宽度。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(8768)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。