No.1
- 回答日時:
こんにちは
ご質問が具体的でないのでコード化はできませんが、以下の考え方で可能と思います。
(他にも方法はいろいろあることでしょう)
1)データの数だけループで2)~4)を繰り返す。
2)一つのデータに対して、別シートの日付欄から該当する列を探す。
方法は各列をループで探査しても良いし、ワークシート関数(Matchなど)
を利用するのもあり
3)同様に時間の欄から該当する行を探す。
4)見つかった行と列のセルにデータを記入
5)2)~4)を繰り返す
※ 2)、3)で該当する欄が見つからない場合の処理を記しておく必要がありそうです。
※ 4)で。同じセルに重ねてデータを記入する場合の処理を考えておく方が良さそう。
No.2
- 回答日時:
画像やはり小さくて読めないんですが
重複がないならピボットッテーブルで
出来ると思います。
先頭に見出し行があるなら
リスト内のセルを選択して
挿入ピボットテーブルで
列と行に日付と時刻を割り当て
値にデータを入れれば出来るのでは?
この回答へのお礼
お礼日時:2017/08/07 23:02
ご回答ありがとうございます。
ピボットテーブルも考えたのですが、その後の表を用いて計算等をするために断念しました。
ご意見ありがとうございました。
No.3ベストアンサー
- 回答日時:
こんばんは!
元データはSheet1にあり、Sheet2のM1セル以降に表示するとします。
画像通り、Sheet1のデータは3行目以降にあるとします。
今回はオートフィルタを使っていますので、Sheet1の2行目は何らかの項目名が入っているという前提です。
画像では項目名が入っていませんが、ダミーでも良いので項目を入れておいてください。
標準モジュールです。
Sub Sample1()
Dim i As Long, k As Long, lastRow As Long
Dim lastCol As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "M").End(xlUp).Row
lastCol = wS.Cells(1, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
If lastCol > 12 Then
Range(wS.Cells(1, "M"), wS.Cells(lastRow, lastCol)).Clear
End If
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "B"), .Cells(lastRow, "B")).AdvancedFilter Action:=xlFilterCopy, copytorange:= _
wS.Range("M1"), unique:=True
For i = 3 To lastRow
If .Cells(i, "B") > .Cells(i - 1, "B") Then Exit For
.Cells(i, "C").Copy wS.Cells(1, Columns.Count).End(xlToLeft).Offset(, 1)
Next i
For k = 2 To wS.Cells(Rows.Count, "M").End(xlUp).Row
.Range("B:B").AutoFilter field:=1, Criteria1:=Format(wS.Cells(k, "M"), "yyyy/m/d") '//←表示形式に注意★//
Range(.Cells(3, "D"), .Cells(lastRow, "D")).SpecialCells(xlCellTypeVisible).Copy
wS.Cells(k, "N").PasteSpecial Paste:=xlPasteAll, Transpose:=True
Next k
.AutoFilterMode = False
wS.Range("M1").CurrentRegion.Columns.AutoFit
wS.Activate
wS.Range("M1").Select
Application.ScreenUpdating = True
MsgBox "完了"
End With
End Sub
※ 日付のフィルタはかなり厄介です。
コード内に記載している「★」の行のようにSheet1のB列(日付列)の表示形式は
実際の表示形式に合わせてください。m(_ _)m
この回答へのお礼
お礼日時:2017/08/07 23:04
ご回答ありがとうございます。
コード化まで重ね重ねありがとうございました。
コピーさせて頂き、項目名を設定後使用させて頂きます。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) Excel ある複数列に数値を入力した際に、別の列に本日の日付を入力したいです 7 2023/03/01 23:31
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセル 2つの列にある値の完全一致を抜き出すVBA 15 2022/12/15 03:22
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
Excelで2つのデータの突合せを...
-
エクセルで日付から日にちを削...
-
Excelで2行単位のソートの出来...
-
エクセルで、重複データを除外...
-
複数の条件に合う行番号を取得...
-
Countifよりも早く重複数をカウ...
-
エクセル~空白のセルのある行...
-
500行の中から、多い順に抽出す...
-
エクセルで時刻だけを抜き出す...
-
エクセルデータの比較をしたい。
-
エクセルVBA C列に特定の文字列...
-
Excel エクセル 2003 セル内...
-
エクセルで並び替えをしたあと...
-
【Excel】小計単位で並べ替えを...
-
Excelのマクロの使い方
-
VBA 数式を最終行までコピー
-
EXCLE 半角カナを全角かなに一...
-
Excelの関数でこんな処理ができ...
-
エクセルで範囲内にある重複し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
Excelで2つのデータの突合せを...
-
Excelで2行単位のソートの出来...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Countifよりも早く重複数をカウ...
-
Excelの30個ずつの平均値の出し方
-
エクセルで横並びの複数データ...
-
エクセルVBA C列に特定の文字列...
-
VBA 数式を最終行までコピー
-
500行の中から、多い順に抽出す...
-
エクセルで1つの会社名に対して...
-
VBA 大きなtxtテキストファ...
-
【エクセル】1列内に複数ある同...
-
エクセルで時刻だけを抜き出す...
-
エクセル~空白のセルのある行...
-
Excelの関数でこんな処理ができ...
-
Excel VBA 【QueryTables.Add】...
おすすめ情報
具体例がなかったため、画像を添付します。
こんな感じにできますでしょうか
画像が小さかったので再添付