あなたの習慣について教えてください!!

入力する表が 下記の通りです

日付  氏名    内容
1   Aさん   12345
2   Bさん   23456
3   Cさん   34567
2   Aさん   56789
3   Bさん   98765
5   Aさん   34986
というような表です

シート名は"Aさん"という名のシートと"Bさん"というシートと"Cさん"という名のシートがあります。

そのAさんという名のシートには

日付  内容
1   
2   





というような 表があります。これは"Bさん""Cさん"ともいっしょです
この"Aさん""Bさん""Cさん"の名前を判別して、その"内容"をAさんならAさんのシートの同じ日付の"内容"に書き込みたいのです。
結果としては、
Aさんのシート
日付  内容
1   12345
2   56789



6   34986

としたいのです。 

どなたかよい方法御座いましたら宜しくお願い致します。

A 回答 (2件)

Sub TENKI()



Dim DATA
Dim i As Integer

'データの範囲(範囲は広くても構わない)
'タイトル行も含む
DATA = Range("A1:C6")

'データの転記(タイトル行を避けて読み込む i=2)
For i = 2 To UBound(DATA)

If DATA(i, 1) = "" Then
'日付欄が空白なら、記入を終了します。
Exit For
Else
'B列のデータをシート名にします。
Sheets(DATA(i, 2)).Select
'日付(半角整数値)を元に、データを記入します。
'DATA(i, 1) + 1 < この数字(1)は記入開始の縦位置を指示
'Cells(, 2) < この数字(2)は記入開始横位置を指示
Cells(DATA(i, 1) + 1, 2) = DATA(i, 3)
End If
Next

MsgBox "転機終了"

End Sub

VBAの基本的なプログラムが解れば、理解可能だと思います。
    • good
    • 0

(例データ)


Sheet6に
日付氏名内容
2004/7/1Aさん12345
2004/7/2Bさん23456
2004/7/3Cさん34567
2004/7/2Aさん56789
2004/7/3Bさん98765
2004/7/5Aさん34986
別にAさん、Bさん、Cさんと言う名のシート名に3シートを変えておく。A,B、Cの文字の全角・半角に注意。
本件では全角。
(VBAコード)
標準モジュールに
Sub test01()
Dim sh1 As Worksheet
Set sh1 = Worksheets("Sheet6")
Dim sname As String
d = sh1.Range("A65356").End(xlUp).Row
' MsgBox d
For i = 2 To d
sname = sh1.Cells(i, "B")
' MsgBox sname
n = Cells(i, "A") - Cells(2, "A") + 1
'MsgBox n
Worksheets(sname).Cells(n, "A") = sh1.Cells(i, "A")
Worksheets(sname).Cells(n, "B") = sh1.Cells(i, "B")
Worksheets(sname).Cells(n, "C") = sh1.Cells(i, "C")
Next i
End Sub
Sheet6のsの大文字に注意。
(注意)A,B、Cさん各シートのA列書式を日付にする
こと。
(結果)
Aさんシート
2004/7/1Aさん12345
2004/7/2Aさん56789


2004/7/5Aさん34986
Bさんシート

38170Bさん23456
38171Bさん98765
Cさんシート


38171Cさん34567
私の過去の経験から会得した自家製のコーディング的なところがあります。修正する時は意を汲んでください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報