Реорганизация данных (Microsoft Excel)
Если вы импортируете список данных в Excel, нередко оказывается, что в столбце A окажется много данных. На самом деле нет ничего необычного в том, что ни в одном из других столбцов ничего нет. (Все это, конечно, зависит от характера импортируемых данных.) В рамках работы с данными в Excel вы можете захотеть «реорганизовать» данные так, чтобы они были помещены в большее количество столбцов, чем только столбец A .
В качестве примера представьте, что вы импортировали свои данные, и в итоге они заняли строки с 1 по 212 столбца A. На самом деле вам нужно, чтобы данные занимали столбцы с A по F, сколько бы строк ни было необходимо для хранения данных. Таким образом, A2 нужно переместить в B1, A3 в C1, A4, в D1, A5 в E1, A6 в F1, а затем A7 в A2, A8 в B2 и т. Д.
Чтобы реорганизовать данные таким образом, вы можете использовать следующий макрос.
Выберите данные, которые нужно реорганизовать, а затем запустите макрос. Вас спрашивают, сколько столбцов вы хотите в реорганизованных данных, а затем начинается смещение данных.
Sub CompressData() Dim rSource As Range Dim rTarget As Range Dim iWriteRow As Integer Dim iWriteCol As Integer Dim iColCount As Integer Dim iTargetCols As Integer Dim J As Integer iTargetCols = Val(InputBox("How many columns?")) If iTargetCols > 1 Then Set rSource = ActiveSheet.Range(ActiveWindow.Selection.Address) If rSource.Columns.Count > 1 Then Exit Sub iWriteRow = rSource.Row + (rSource.Cells.Count / iTargetCols) iWriteCol = rSource.Column + iTargetCols - 1 Set rTarget = Range(Cells(rSource.Row, rSource.Column), _ Cells(iWriteRow, iWriteCol)) For J = 1 To rSource.Cells.Count rTarget.Cells(J) = rSource.Cells(J) If J > (rSource.Cells.Count / iTargetCols) Then _ rSource.Cells(J).Clear Next J End If End Sub
Макрос передает информацию, определяя два диапазона: исходный диапазон, выбранный вами при запуске макроса, и целевой диапазон, определяемый рассчитанным размером на основе необходимого количества столбцов. Исходный диапазон представлен объектом переменной rSource, а целевой диапазон — rTarget. Цикл For … Next используется для фактической передачи значений.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2301) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Reorganizing_Data [Реорганизация данных]
.