2011-06-02 20 views
0

ファイル全体にパターンB9、B19、B29などを抽出したいだけのファイルがあります。私はそれが別のExcelファイルや他のExcelワークシートにあるそれらのセルだけを使って処理できるように、別のExcelファイルに抽出することをお勧めします。Excelが特定のセルからデータを取り出す

潜在的に、私はこの種のことをする必要があるかもしれないいくつかのExcelファイルを持っているかもしれないので、私はいつもセルB9、B19、B29それは素晴らしいだろう。任意のヘルプは、私は何とか行がそれに9を持っており、行がBであるならば、どこかでそれを印刷言っエクセルIF文を作ることができれば

可能EDIT

が考えていた場合、私は、構文を探して

を高く評価しましたしかし、私はそれが列に印刷されます

EDIT 2 私は前に述べたように列Bをしたくないです。 B9、B19、B29、B39全体のファイル

答えて

0

INDIRECT機能を使用できます。これは、セル参照をテキスト文字列として受け取り、そのセルの値を返します。

=indirect("data!r9c1",false) 

:だからではなく、セルA9で "データ" シートに値を取得するために

=data!a9 

を使用しての、あなたはまた、このように、R1C1表記を使用することができます

=indirect("data!a9") 

を使用しますそこからROWとCOLUMN関数を使って10のステップで行くことができます:

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

この数式を出力シートのA1に入力し、それをコピーアンドペーストすると、セルA1、A2のデータ!A9、データ!A19、データ!A29、...の値が得られます、A3 ...出力をどのように配置するかによって、セル参照文字列を変更する必要があります。

+0

これはREFエラーですが、それはB soooo私はコピーする必要があります=間接( "データ!r"& - 1 + 10 * ROW()& "C"&COLUMN()、FALSE)データを持つセルに入れると上書きされますか?)次に列にドラッグしますか? –

+0

セルA9、B9、C9、A19、...、およびセルのシート "データ"に必要なデータがある場合A1、B1、C1、A2、...のセルの出力をシートに出力したい場合はA1、B1、C1、A2のシートに出力します。 –

+0

助けてくれてありがとうすべての質問を残して申し訳ありません:私は欲しいだけですB9、B19、B29、B39の値がファイル全体にそのパターンで表示されます –

0

これを実行する頻度によって、実行する必要があるかどうかによって異なります。

セルC1に

は、次のように置く:

=MOD(ROW(),10) 

、あなたのデータの下にこれを下に複製します。コマンドは1から0までの数字を返します。次に、値が9である列Cのデータをフィルタリングし、表示可能な行を選択して新しいシートにデータをコピーします。

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

事も行は行9,19,29,39に関連付けられています他の列C、D、Eがあるということです、49,59。私はそれが私がそれを必要とするかどうか私はちょっと混乱しているので、あなたが答えているかどうかわからない。 –

+0

@ Tyler31私はあなたが新しいシート/ワークブック上の列AからEの行9,19,29などを望んでいると推測しています - 最後の列に "mod(行10)"を入れ、たとえば列Fの場合、表示されているフィルタリングされた行だけを新しいシート/ワークブックにコピーすることができます – harag

+0

B列、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

関連する問題