Excel извлекает данные из определенных ячеек - PullRequest
0 голосов
/ 02 июня 2011

У меня есть файл, который я хочу извлечь только из ячеек B9, B19, B29 и т. Д. И т. Д. В виде шаблона по всему файлу.Я бы предпочел, чтобы он был извлечен в другой файл Excel или каким-то другим образом, чтобы я мог работать только с этими ячейками в другой рабочей таблице Excel.

Потенциально у меня может быть несколько файлов Excel, которые мне могут понадобитьсятакого рода вещи, так что если бы у меня был один и тот же формат для множества файлов, я всегда мог бы извлечь ячейки B9, B19, B29, и это было бы здорово.любая помощь оцененаесли B, то напечатайте его где-нибудь, но я хочу, чтобы он был напечатан в столбце

РЕДАКТИРОВАТЬ 2 Мне просто нужен столбец B, а не A, как я упоминал ранее.B9, B19, B29, B39 через весь файл

Ответы [ 3 ]

1 голос
/ 02 июня 2011

На всякий случай, если вы хотите сделать это с кодом:

Sub Test()
  'Assumes Sheet1 has your values and Sheet2 will be the data extracted from every row ending in 9
  Dim iCounter As Long
  Dim newSheetRow As Long
  Dim aValue As String
  Dim bValue As String

  newSheetRow = 1
  'Start and nine and increment by 10 till you reach end of sheet
  For iCounter = 9 To Sheet1.Rows.Count - 1 Step 10 'NOTE:  You may not want to do it by RowCount, but just showing you could
      aValue = Sheet1.Range("A" & iCounter)
      bValue = Sheet1.Range("B" & iCounter)

      Sheet2.Range("A" & newSheetRow).Value = "We were on row: " & iCounter
      Sheet2.Range("B" & newSheetRow).Value = aValue
      Sheet2.Range("C" & newSheetRow).Value = bValue
      newSheetRow = newSheetRow + 1
  Next iCounter

  MsgBox "Done"
End Sub
0 голосов
/ 02 июня 2011

Вы можете использовать функцию INDIRECT.Он принимает ссылку на ячейку в виде текстовой строки и возвращает значение в этой ячейке.Таким образом, вместо использования

=data!a9

для получения значения на листе «data» в ячейке a9, вы используете

=indirect("data!a9")

Вы также можете использовать нотацию r1c1, например:

=indirect("data!r9c1",false)

Оттуда вы можете использовать функции ROW и COLUMN, чтобы перейти к шагам 10:

=INDIRECT("data!r"&-1+10*ROW()&"c"&COLUMN(),FALSE)

Если вы поместите эту формулу в A1 вашего выходного листа, а затем скопируйте и вставьте ееи наоборот, он даст вам значения в данных! A9, данных! A19, данных! A29, ... в ячейках A1, A2, A3 ... В зависимости от того, как вы хотите организовать вывод, вам, возможно, придется изменитьстрока ссылки на ячейку.

0 голосов
/ 02 июня 2011

В зависимости от того, как часто вы хотите это сделать, зависит от того, как вам нужно это сделать, если это одна из них, могут помочь некоторые простые команды Excel.

например,

В ячейке C1поместите следующее:

=MOD(ROW(),10)

, затем скопируйте это в конец ваших данных.команда вернет числа от 1 до 0. Затем можно отфильтровать данные в столбце C, где значение равно 9, затем выбрать видимые строки и скопировать данные на новый лист.

ROW()  ' this returns the ROW number of cell the command is in.
MOD(number, divisor) ' this basically divides one number by the other and returns the remainder. so row 9 / 10 = 0 remainder of 9, row 19 / 10 = 1 remainder of 9.

Надеюсь, это поможет.

...