Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4873 / 13644 ツリー ←次へ | 前へ→

【53881】データの読み込み方 haru 08/2/13(水) 16:15 質問[未読]
【53888】Re:データの読み込み方 VBWASURETA 08/2/13(水) 18:43 発言[未読]
【53908】Re:データの読み込み方 VBWASURETA 08/2/14(木) 13:33 発言[未読]

【53881】データの読み込み方
質問  haru  - 08/2/13(水) 16:15 -

引用なし
パスワード
   こんにちは。
考え方が思いつかなかったので教えてください。

下記のようなデータがあるとします。
BまたはC列のどちらかで一致し、A列・E列が一致するもG列以降を抜き出し、数をカウントします。

Dim Cell_A As String
ReDim SNAry(0 To 50, 0 To 80)
j = 0
l = 0
For i = 1 To 5000
  If Range("A" & i) = "" Then
    Exit For
  Else
    Cell_A = Range("C" & i)
    For n = i + 1 To 5000
      If Range("A" & n) = "" Then
        Exit For
      Else
        If Cell_A = Range("C" & n) Or Cell_A = Range("B" & n) Then
          If Range("A" & i) = Range("A" & n) And Range("E" & i) = Range("E" & n) Then
            '☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
            'SNAry(j, k) = Cells(i, l)
            k = k + 1
            l = l + 1
          End If
        End If
      End If
    Next n
  End If
  '初期化
  l = 6
  j = j + 1
  k = 0
Next i

コメントで☆になっている箇所がわかりませんでした。
配列にすべて代入してしまうと同一の数値も格納されてしまいます。
配列内でLOOPさせたりしたほうがよいのでしょうか?

A    B    C    D    E    F    G    H    I    J    K
**********************************************************************************
1    AA    R1    a    0.5        0.1    0.2    0.3    0.4
1    AA    R1    b    0.5        0.1    0.2    0.5    
1    AA    R1    a    0.5        0.1    0.2    0.6    
3    AA    R1    a    0.5        0.1    0.2    10
1    AA    R1    a    0.5        0.1    0.2    0.7
1    R1    C1    a    0.5        0.1    0.2    0.8
1    R1    C1    a    0.5        0.1    0.2    0.9
    
                    ↓

A    B    C    D    E    F    G    H    I    J    K
**********************************************************************************
R1    1    0.5    0.1    6
R1    1    0.5    0.2    6
R1    1    0.5    0.3    1
R1    1    0.5    0.4    1
R1    1    0.5    0.5    1
R1    1    0.5    0.6    1
R1    1    0.5    0.7    1
R1    1    0.5    0.8    1
R1    1    0.5    0.9    1
R1    3    0.5    10    1
C1    1    0.5    0.8    1
C1    1    0.5    0.9    1

【53888】Re:データの読み込み方
発言  VBWASURETA  - 08/2/13(水) 18:43 -

引用なし
パスワード
   ▼haru さん:

こんにちは。
書いている条件と内容(見づらいです・・・)がよくわからなかったので、
ソースにコメントとちょっとエラーになる箇所を修正しました。
でも列固定で繰り返ししている理由がさっぱり・・・すみません。


Sub main()

  Dim Cell_A As String
  ReDim SNAry(0 To 50, 0 To 80)
  j = 0
  l = 1 'ここ変えさせてもらいました。0だとエラーになりますし。
  For i = 1 To 5000
    If Range("A" & i) = "" Then
      'A列が無いからiループから抜け
      Exit For
    Else
      'C列のデータをセルAの変数に入れる
      Cell_A = Range("C" & i)
      For n = i + 1 To 5000
        'A列の1行下があったりする?
        If Range("A" & n) = "" Then
          'A列1行下が無いからnループから抜け
          Exit For
        Else
          'C列とC列1行下が同じ? 又は、 C列とB列1行下が同じ?
          If Cell_A = Range("C" & n) Or Cell_A = Range("B" & n) Then
            'A列とA列1行下が同じで 且つ E列とE列1行下が同じ!
            If Range("A" & i) = Range("A" & n) And Range("E" & i) = Range("E" & n) Then
              '☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
              '最初はSNAry(Empty, Empty) = Cells(1, 0)の内容を入れよー!!っておい!そんなセルねぇよ
              '次にSNAry(0, 1)、Cells(1, 1)カウントアップ
              SNAry(j, k) = Cells(i, l) '条件に合った時のセルアドレスはA1 B1 C1 D1 E1 F2 G2 H2 I2 F3 G3 H3 F5 G5 F6です
              k = k + 1
              l = l + 1
            End If
          End If
        End If
      Next n
    End If
    '初期化
    l = 6
    j = j + 1
    k = 0
  Next i
  
End Sub

【53908】Re:データの読み込み方
発言  VBWASURETA  - 08/2/14(木) 13:33 -

引用なし
パスワード
   こんにちは。

とりあえず、わからないなりにソースから予測してみました。
以下の式を空いているシート列の1行目に入れてみて下さい。

=IF(AND(OR(COUNTIF($B$1:$B$6,B1)>1,COUNTIF($C$1:$C$6,C1)>1),AND(COUNTIF($A$1:$A$6,A1)>1,COUNTIF($E$1:$E$6,E1)>1)),"○","×")


条件はシート同一列内検索で値が2件(検索値 + 見つかった件数)以上の場合にし、
その条件にB列 Or C列 And (A列 And E列) の条件を追加で言われている
条件かなっと作ってみました。範囲は6行までにしてあります。
必要行数に合わせて変更する必要があります。
条件に合えば「○」違えば「×」が入ります。

4873 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free