[リストへもどる]
一括表示

投稿時間:2002/09/19(Thu) 15:20
投稿者名:半人前
Eメール:
URL :
タイトル:
Excel操作
何度も質問して本当に申し訳ないですがよろしくお願いします。

ただいま簡単なクイズの集計をVBでやっています。
と言っても内容はVBでエクセルを操作していくというものですが。
Aセルに一回目の正解者の名前、Bセルに一回目の得点をいれます。
次に、
Cセルに二回目の正解者の名前、Dセルに二回目の得点をいれます。

問題はここからなんです・・・
そのあとにAセルに1回目と2回目の正解者の名前を追加したいのです。
もちろん、1回、2回目とも正解者もいます。
そういう場合は消去します。
僕の理屈では、
「もしもAセルにCセルにある名前がなかった場合、Aセルになかった名前だけを追加します。」
という理屈なんですが、うまくできません。
うまく説明できなくてもうしわけありませんが、どなたかアドバイスをください。
よろしくお願いします。

投稿時間:2002/09/20(Fri) 11:10
投稿者名:A221
Eメール:
URL :
タイトル:
Re: Excel操作
だいぶ読みにくいかと思いますが、エクセルのマクロでとりあえず動作しました。
#動作するだけです。セル全部見に行くので遅いかも。

こんなかんじです。

Sub Loading()
Dim ACount As Long
Dim CCount As Long
Dim ACcount As Long

Dim i As Long

Dim Flag As Boolean

With Worksheets(1)
    'A列単独の件数を取得
    ACount = 0
    Do
        ACount = ACount + 1
    Loop Until .Cells(ACount, 1).Value = Empty
    ACount = ACount - 1
    
    CCount = 1
    ACcount = 0
    Do Until .Cells(CCount, 3).Value = Empty
        'C列とA列を比較してA列にあればフラグを落としループを出る
        For i = ACount To 1 Step -1
            If .Cells(i, 1).Value <> .Cells(CCount, 3).Value Then
                Flag = True
            Else
                Flag = False
                Exit For
            End If
        Next i
        'フラグが立っていればコピーの処理を行う
        If Flag Then
            ACcount = ACcount + 1
            .Cells(ACount + ACcount, 1).Value = .Cells(CCount, 3).Value
            Flag = False
        End If
        CCount = CCount + 1
    Loop
End With
End Sub