アプリ版:「スタンプのみでお礼する」機能のリリースについて

どなたかご教授ください。
一方のエクセル(test_report_kw.xlsm)の中にあるテキストから
もう一方のエクセル(test_search_kw.xlsx)に指定する文字があるかを確認し
その結果をエクセルに吐き出すプログラムを作成しています。

その際、文字検索結果(含まれる場合:1、含まれない場合:0)を作成した
配列flgを作成し、エクセルに吐き出すようにしているのですが
吐き出した結果が全て0出力になっており困っております。

ウォッチ式で確認する限り、配列内では正常に処理されており
出力段階に何か問題があるようです。

どなたかご教授くださいますと幸いです。

Dim report_kw() As Variant
Dim search_kw() As Variant
Dim flg() As Integer

Workbooks("test_report_kw.xlsm").Worksheets("report_sum").Activate
LastCell_Row_Report_kw = ActiveSheet.Cells.SpecialCells(xlLastCell).Row

ReDim report_kw(LastCell_Row_Report_kw, 1)
report_kw = Range(Cells(2, 1), Cells(LastCell_Row_Report_kw, 1))

Workbooks("test_search_kw.xlsx").Worksheets("Sheet1").Activate
LastCell_Row_search_kw = ActiveSheet.Cells.SpecialCells(xlLastCell).Row

ReDim search_kw(LastCell_Row_search_kw, 1)
ReDim flg(LastCell_Row_Report_kw - 1)

search_kw = Range(Cells(2, 2), Cells(LastCell_Row_search_kw, 2))

For i = 1 To LastCell_Row_Report_kw - 1

'初期化
flg(i) = 0

For l = 1 To LastCell_Row_search_kw - 1

If InStr(report_kw(i, 1), search_kw(l, 1)) > 0 Then flg(i) = flg(i) + 1

Next
Next

Workbooks("test_report_kw.xlsm").Worksheets("report_sum").Activate

Range("e1").Value = "FLG"
Range("e2").Resize(LastCell_Row_Report_kw - 1, 1).Value = flg

A 回答 (2件)

1次元配列を縦に出力しているからです。



横に出力すれば正しく表示されます。
例えば、
Range("e2").Resize(1, UBound(flg) + 1).Value = flg
のように。

どうしても縦に出力したいのであれば、2次元配列にしましょう。
    • good
    • 0
この回答へのお礼

な、なるほど!
一元配列が横展開という認識がありませんでした。。。
試してみます。
ありがとうございます。

お礼日時:2011/08/09 16:21

なぜ、最後だけ、flgなのでしょう?


配列変数を使っているんですよね?
    • good
    • 0
この回答へのお礼

お答え下さいましてありがとうございます。
配列のもの全てを一度にエクセルに貼り付けをしようとしたためこのような書き方をしてみたのです(汗)
検索元のファイルが30万行程度のファイルなので
セル指定で処理するのはどうにも気が引けまして。

お礼日時:2011/08/09 16:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!