こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロの質問です

こんばんわ!

同様のデータの列を検索したいのですが、良い方法が思いつきません。
色々考えてできたのが下記の方法ですが、項目が増えると大変なので、簡易化したいです。

今回簡易化したいのは↓
Sub test()
Dim test(1 To 10) As Integer
Dim stok_date As String
For i = 1 To 5 Step 1
stok_date = Cells(1, i)
For j = 1 To 10 Step 1
If stok_date = Cells(3, j) Then
If test(1) = Empty Then
test(1) = j
ElseIf test(2) = Empty Then
test(2) = j
ElseIf test(3) = Empty Then
test(3) = j
ElseIf test(4) = Empty Then
test(4) = j
ElseIf test(5) = Empty Then
test(5) = j
End If
Exit For
End If
Next j
Next i
End Sub

一行目○列目のデータが三行目の何列目にあるのかをそれぞれtest(○)に入れたい。
といった具合です。

アドバイスの程よろしくお願いいたします。

投稿日時 - 2011-09-07 04:07:38

QNo.6994706

すぐに回答ほしいです

質問者が選んだベストアンサー

NO1です。
一部コード誤りの訂正と空セルを考慮してみました。

Sub sumple()
Dim test()
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, i) <> "" Then
Set wk = Rows(3).Find(Cells(1, i))
If Not wk Is Nothing Then
j = j + 1
ReDim Preserve test(1 To j)
test(j) = wk.Column
End If
End If
Next
End Sub

投稿日時 - 2011-09-07 11:05:49

お礼

できました~!!
findとredimを使えばよかったんですね!!
また一つ勉強になりました!!
ありがとうございました!!

投稿日時 - 2011-09-14 04:08:28

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

一例です。
動的配列を使用しましたが如何でしょうか。

Sub sumple()
Dim test()
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
Set wk = Rows(3).Find(Cells(1, i))
If Not wk Is Nothing Then
j = j + 1
ReDim Preserve test(1 To i)
test(j) = wk.Column
End If
Next
End Sub

投稿日時 - 2011-09-07 09:59:17

お礼

できました~!!
findとredimを使えばよかったんですね!!
また一つ勉強になりました!!
ありがとうございました!!

投稿日時 - 2011-09-14 04:08:38

あなたにオススメの質問