2016-08-05 17 views
0

"A"列に値が含まれているシートがあります。私は文字列 "Code:"が見つかった新しいシートに行番号を集めたいと思います。 これを達成するためにVBAコードを書きたいと思います。たとえば :マクロ - 値の列を含むセルの行番号番号 "コード:"

シート1:

RowNo | Column A 
------|--------- 
1 | Hello World 
2 | Good morning 
3 | Code: 46904A65 
4 | Excuse 
5 | Code: 4523S45 

出力用紙:

RowNo | Column A 
------|--------- 
1 | 3 
2 | 5 

説明:文字列 "コード:" シート1の3番目と4番目の行で見つかったので、出力シートは、これらの行が含まれていますその中の数字。

Set stTempData = Sheets("Output Sheet") 
stTempData.Select 

Set mainsheet = Sheets("Sheet1") 
mainsheet.Select 
k = Range("a65536").End(xlUp).Row 

i = 1 
Do While i < k 

Set r = stTempData.Range("a65536").End(xlUp).Offset(1, 0) 

If InStr(ActiveSheet.Cells(i, 0).Value, "Code:") > 0 Then 
    r.Offset(i, 0).Value = ActiveCell.Row - 1 
    j = i 
    r.Offset(j + 1, 1).Value = ActiveCell.Row - 2 
End If 

i = i + 1 
Loop 
+0

'次のコードは、ずっと私たちを助けていない'動作していないそれをオフに投げていたactivesheetとのActiveCellを持っていました。それは何が間違っているのですか?主に状態の場合は –

+0

です。私はセルの値を選択することができません。 'ActiveSheet.Cells(i、0).Value'は無効です –

+1

'0'に列がないので、 '1'に変更します。 –

答えて

2

が出力シートにA1でこれを入れて:

=IFERROR(AGGREGATE(15,6,ROW(Sheet1!$A$1:$A$5)/(ISNUMBER(SEARCH("Code",Sheet1!$A$1:$A$5))),ROW(1:1)),"") 

をそして、あなたは空白を得るまでダウンコピー

次のコードは動作しません。あなたのコードのよう


:()は1に変更する必要がある何の列0だからあなたの細胞がありません

また、あなたはrを相殺する必要はありません。もう一つは、あなたは:

Set stTempData = Sheets("Output Sheet") 
stTempData.Select 

Set mainsheet = Sheets("Sheet1") 
mainsheet.Select 
k = Range("a65536").End(xlUp).Row 

i = 1 
Do While i <= k 

    Set r = stTempData.Range("a65536").End(xlUp).Offset(1, 0) 

    If InStr(mainsheet.Cells(i, 1).Value, "Code:") > 0 Then 
     r.Value = mainsheet.Cells(i, 1).Row 
    End If 

    i = i + 1 
Loop 
+0

+1しかし、私の悪い。私はこの機能を実現するためにVBAマクロコードが必要でした。あなたはVBAで私を助けてくれますか? –

+0

@SandeepKushwah編集を参照してください –

+0

ありがとうScott、私はそれを検証しています。一度それが答えとしてマークされます:) –

関連する問題