2011-06-02 6 views
0

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

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

Я ищу синтаксисом, если это возможно

EDIT

Думал, смогу ли я каким-то образом сделать заявление первенствует IF говоря, если строка имеет в нем 9 и строка B затем распечатать его где-нибудь но я хочу, чтобы это было напечатано в колонке

EDIT 2 Мне просто нужна колонка B, не такая, как я упоминал ранее. B9, B19, B29, B39 по всему файлу

ответ

0

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

=data!a9 

, чтобы получить значение в листе "данных" в ячейке 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

Это дает мне ошибку REF, но если я хочу сделать это в B soooo Мне нужно скопировать и вставить = INDIRECT ("data! r" & - 1 + 10 * ROW() & "c" & COLUMN(), FALSE) из верхней части столбца B (где нет данных, потому что если я поместил его в ячейку с данными, он просто переписал бы ее?), а затем перетащить ее через столбцы? –

+0

Если данные, которые вы хотите, находятся на «данных» листа в ячейках A9, B9, C9, A19, ... и вы хотите, чтобы результат в листе «выводился» в ячейках A1, B1, C1, A2, ..., затем помещал эту формулу в «вывод» листа в ячейки A1, B1, C1, A2, ... –

+0

Спасибо за помощь и извините за все вопросы: я только хочу значения из B9, B19, B29, B39 в этом шаблоне во всем файле –

0

В зависимости от того, как часто вы хотите это сделать, зависит от того, как вам это нужно, если это один из них, могут помочь некоторые простые команды 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. 

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

+0

Дело в том, что Есть другие столбцы C, D, E, который также будет иметь ряд связанных с Роу 9,19,29,39 , 49,59. Я не уверен, что вы ответили или нет, потому что я немного смущен, если он делает то, в чем я нуждаюсь. –

+0

@ Tyler31 Я предполагаю, что вам нужны столбцы от A до E строк 9, 19, 29 и т. Д. На новом листе/книге - если вы поместите «= mod (row(), 10)» в последний столбец и отфильтруйте это (например, столбец F, тогда вы можете скопировать только видимые отфильтрованные строки на новый лист/книгу – harag

+0

Мне нужен только столбец B. B0, B9, B19, B29, B39 и т. д. –

1

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

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

- это код VBA? –

+1

Иисус ... Я точно надеюсь на это! : D – ray

Смежные вопросы