-1

Я европейский пользователь MS Excel 2010, и мне пришла в голову странная идея, что я хочу, например, 31 строку, равномерно распределенную по всей длине одного листа (здесь: A4), исключая, конечно, поля страницы.

Теперь, есть ли способ сделать это в Excel? Если нет, как рассчитать необходимую высоту строки с помощью калькулятора? Или, может быть, создать шаблон в Excel, чтобы рассчитать это для Excel?

Я знаю, что мог бы сам покопаться в этом втором способе с помощью нескольких ручных вычислений, но, поскольку я уже хотел задать этот вопрос о способности Excels, я надеюсь, что вы понимаете мою лень. ;)

Заранее спасибо за помощь!

2 ответа2

0

Вы можете настроить Excel так, чтобы он отображал область печати. Проверьте ленту (View/Page Layout). Затем вам нужно выбрать все 31 ряд и изменить высоту одного из них.

0

Если вы не против использования VBA в вашей электронной таблице, это возможно. Во-первых, если у вас еще нет вкладки «Разработчик» на ленте, перейдите в «Файл» -> «Параметры», «Настроить ленту» и в правой панели выберите «Разработчик», затем нажмите «ОК». Затем перейдите на вкладку Разработчик, затем Visual Basic. С левой стороны дважды щелкните по этой книге и вставьте приведенный ниже код. При необходимости измените конфигурацию. Теперь, когда вы щелкаете, чтобы сохранить вашу книгу, строки автоматически подстраиваются под указанные параметры.

Стоит отметить возможность размещения более 31 строки на странице, несмотря на другие вычисления; используя обычные поля Excel и верхний / нижний колонтитул, 34 строки помещаются на странице. Изменив поля и верхний / нижний колонтитулы на 0, на странице помещается 31 строка.

По этой причине я предлагаю двойную проверку с предварительным просмотром и соответственно уменьшить RowsPerPage, если у вас больше строк, чем ожидалось на страницу. Существует только так много разрешения для фактической установки высоты строк, поэтому, к сожалению, это не идеально. Надеюсь, это поможет, в любом случае.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

        ' Configuration
        RowsPerPage = 31            ' number of rows per page, as stated in question
        NumberOfPages = 1           ' how many pages of data you have
        NumberOfSheets = 1          ' How many spreadsheets are in use

        TargetPageHeight = 29.7     ' A4 height in cm

        ' Don't change anything below here
        TargetPageHeight = Application.CentimetersToPoints(TargetPageHeight)
        TotalRowCount = NumberOfPages * RowsPerPage + 1 'Resize beyond the specified area so a smaller row doesn't sneak in
        For sheetIndex = 1 To NumberOfSheets
            AvailablePageHeight = TargetPageHeight
            With Worksheets(sheetIndex).PageSetup
                AvailablePageHeight = AvailablePageHeight - (.TopMargin + .BottomMargin + .HeaderMargin + .FooterMargin)
            End With
            OptimalRowHeight = AvailablePageHeight / RowsPerPage
            currentIndex = 1
            With Worksheets(sheetIndex)
                While currentIndex <= TotalRowCount
                    Rows(currentIndex).RowHeight = OptimalRowHeight
                    currentIndex = currentIndex + 1
                Wend
            End With
        Next sheetIndex

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .