1

珍しい問題があります。列 A:J の範囲のデータでいっぱいのスプレッドシートがあります。さらに列 K を追加し、スタッフの名前を入力します。アイデアは、各スタッフ メンバーにスプレッドシートの割り当てが与えられるということです。割り当ての数値はすでに別のシートで計算されており、このスプレッドシートの列 M と N で参照されています。M2 以下にはスタッフ名が含まれ、N2 以下には対応する割り当てが含まれています。

私の問題は、列 K にこのデータを入力する方法を考え出すことです。たとえば、APerson (M2) には 23(N2) の割り当てがあり、K2 (行 1 がヘッダー) に APerson の名前を入力したいと考えています。その後、APerson2(M3) に 15(N3) を割り当て、K25 から開始します。ループが含まれる気がしますが、私の VBA の知識は不完全であり、見回すと増分番号で満たされるループしか見つかりません。

編集:ファイルを添付していないことをお詫びします。仕事でstackoverflowがブロックされているため、これは最初に電話から投稿されました。作業中のコードを印刷したので、できるだけ早く入力します。

編集 2: これまでのコードは次のとおりです。割り当てが機能しています-一種の。

Sub Allocate()
name1 = Range("M2").Value
countto = Range("N2").Value

Range("K1").Select
 Do
    ActiveCell.Offset(1, 0).Select
    Loop Until IsEmpty(ActiveCell.Value)
    For Counter = 1 To countto
        ActiveCell.Value = name1
        ActiveCell.Offset(1, 0).Select
    Next Counter

name2 = Range("M3").Value
countto2 = Range("N3").Value

Range("K1").Select
 Do
    ActiveCell.Offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.Value)
    For Counter2 = 1 To countto2
        ActiveCell.Value = name2
        ActiveCell.Offset(1, 0).Select
    Next Counter2
End Sub

これを自動的に 'name1'、'name2' などを多数 (20 人以上) のスタッフに手動で入力しなくても自動的に割り当てる方法や、より効率的にするためのヒントはありますか?

4

1 に答える 1

1

あなたはVBの基本的な知識を持っていて、私は少し錆びているので、誰かがあなたにもっと良い答えを与えるまで、これは急いで仕事です。ソースシートでは、3つは各行で連続して異なる名前であり、次に空白の行であると想定しています。

enter code here

Sub Allocate()
i3 = 2     'counter for DESTINATION sheet
i1 = 2     'counter for SOURCE sheet

Do until sheets(source).cells(i1, N#).value = ""     'until the last name
    NAME = sheets(source).cells(i1, N#).value         'N#: column NUMBER containing names
    ENTRIES = Sheets(Source).cells(i1, C#).value      'C#: column NUMBER containing numbers
    For i2 = 1 to ENTRIES
        Sheets(Dest).ceklls(i3, 11).value = NAME             '11 is column K
        i3 = i3 + 1
    Next
i1 = i1 + 1
Loop
于 2012-11-27T16:52:50.463 に答える