• 締切済み

VB.NET 配列の格納

VB.NET 配列の格納 エクセルから任意の列の値を格納したいのですが・・・ 現在、値の取得は以下のようなFor文ループを書いています。 各値を一時記憶(格納)したいのですが、どう書けばいいのでしょうか。 また、各列内で重複する値があった場合、重複を避けて値を取得したいのですが どう書いていいかわかりません。 初歩的な質問で申し訳ありませんが、宜しくお願いします。 PN()→G列の各セルの値の変数 JN()→H列の各セルの値の変数 の変数GYO→シートの最終行 j = 1 For i = 1 To GYO '【リストのG列から部品番号を取得】 PN(j) = xlSheet.Cells(i, 7).Value '【リストのH列から部品和名を取得】 JN(j) = xlSheet.Cells(i, 8).value Next

みんなの回答

  • aji70
  • ベストアンサー率100% (1/1)
回答No.2

'/* カウンタ Dim i As Integer = 1 '/* 最終行 Dim GYO As Integer = 100 '/* 配列宣言 Dim PN(GYO) As String Dim JN(GYO) As String '/* エクセルから取得 For ii = 1 To GYO PN(i) = xlSheet.Cells(i, 7).Value JN(i) = xlSheet.Cells(i, 8).Value Next '/* ここまでは 現行のCOPY ? 以下 追加処理 '/* SORT をかける Array.Sort(PN, JN) '/* 最終的に格納する配列 Dim PN_NEW() As String Dim JN_NEW() As String '/* 比較用 Dim Chk_PN As String = "" Dim Chk_JN As String = "" '/* カウンタ Dim xx As Integer = 0 For i = 0 To GYO - 1 '/* 一行目前と比較する。 If PN(i) <> Chk_PN Or JN(i) <> Chk_JN Then '/* 配列を追加する ReDim Preserve PN_NEW(xx) ReDim Preserve JN_NEW(xx) '/* データを格納する PN_NEW(xx) = PN(i) JN_NEW(xx) = JN(i) xx = xx + 1 End If Chk_PN = PN(i) Chk_JN = JN(i) Next .net のバージョンとかわからないのでとりあえず・・・・  こんなんでどうでしょう? 

bobobo5246
質問者

お礼

回答ありがとうございます。 別案件が割り込んで、質問した内容のものが中断になっているので まだ試してませんが、是非参考にさせていただきます。 お礼が遅くなり、申し訳ありませんでした。 また、Version未記載ですみません。VisualStudio2008です。

bobobo5246
質問者

補足

試してみましたが、IF文で全部抜けてしまって、格納されませんでした。 でも、どこを修正すべきかわかりません・・・。 いまだ格闘中です。

回答No.1

「各列内で重複する値があった場合、重複を避けて値を取得したい」を無視して、 任意の範囲のセルの値を取得する方法を書きます。 Dim AAA() Redim AAA(m,n) ここで、m:取得するデータの行数、n:その一行当たりのデータの列数 For A=1 To m For B=1 To n AAA(A,B)=Cells(X,Y).Value Next B Next A ここで、X:取得するデータの行番号を表示するAの関数値(例 X=2*A+1とか) Y:取得するデータの行番号を表示するBの関数値(例 Y=3*B+10とか) 取得したデータをどうするか(重複する値があった場合の処置等)については、自分でお考え下さい。

関連するQ&A