2017-12-12 9 views
0

ユーザーが従業員と日付でデータを入力できるようにするために、スプレッドシートを設定しています。私は別のテーブルへのエントリに基づいて展開する動的テーブルを作成したいと思います。たとえば、TABLE2に入力された新しい従業員に基づいてTABLE1を自動的に展開してTABLE3のように見えるようにすることができ、TABLE3は「値」列への新しいユーザー入力の準備ができていますか?別のテーブルのエントリに基づいてExcelテーブルを動的に展開する

表1

TABLE 1

表2

TABLE 1

表3

enter image description here

+0

は、ルックス私はExcel 2016を使用していますが、おそらく私が認識していない機能が追加されている可能性があります:https://stackoverflow.com/questions/8087736/how-do-you-make-a-dynamically-sized-data表 – John

+0

あなたは私たちによって望ましい結果を達成することができますこれがオプションの場合は、VBAを実行しますか?また、表3の日付の値はどこから得られますか? – Xabier

+0

はい、VBAは受け入れられますが、VBAに精通していない人にこのワークブックを渡しているので、式が優先されます。私は12月12-14日を表1の日付範囲の例として使用し、表3の各従業員についてこの範囲を繰り返しました。 – John

答えて

0

ない事をやっているための最善の方法が、これはあなたを助ける、または少なくともあなたがやろうとしているもので、正しい方向にあなたを指している可能性があります。

表1がSheet1にあり、表2がSheet2にある場合、新しい行が表2に追加されると、次のコードでその名前がコピーされ、シート1の表1に3回貼り付けられます。上記のレコード、この場合はビルの日付。

下図に示すようにワークシートのChangeイベントにシート2の下に置き、次のコードを、:

enter image description here

コード:これは、以下の記事の複製であるよう

Private Sub Worksheet_Change(ByVal Target As Range) 
LastRow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row 'check the last row on Sheet 2 Table 2 
LastRow1 = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row + 1 'Check the last row on Sheet1 Table 1 

If Target.Row = LastRow Then 'if a new row is added to Table 2 
    Sheet1.Cells(LastRow1, Target.Column).Value = Target.Value 'copy their name to table 1 three times 
    Sheet1.Cells(LastRow1 + 1, Target.Column).Value = Target.Value 
    Sheet1.Cells(LastRow1 + 2, Target.Column).Value = Target.Value 

    Sheet1.Cells(LastRow1, 2).Value = Sheet1.Cells(LastRow1, 2).Offset(-3, 0).Value 'copy the Date from the date above on Sheet1 
    Sheet1.Cells(LastRow1 + 1, 2).Value = Sheet1.Cells(LastRow1 + 1, 2).Offset(-3, 0).Value 
    Sheet1.Cells(LastRow1 + 2, 2).Value = Sheet1.Cells(LastRow1 + 2, 2).Offset(-3, 0).Value 
End If 
End Sub 
関連する問題