いつもお世話になっております。
現在dictionary勉強中ですが、なかなかコツをつかめず
思ったとおりのマクロを作成することができません(ノ_;)
ところで、今回作成しているのは
元データ.xlsというファイルのシート(データ)に
|【A】| B | C |【D】| E | F |・・・|H|I|【J】|K
3 【顧客ID】|顧客|受付日|【担当】|・・・|【会場名】|(見出し)
4 データの始まり↓
と、ありまして、
集計データ.xlsのシート(集計)に
| A | B | C | D | E | F |
1 顧客ID|担当|会場名|
と二行目から一覧表があります。
A列のIDが一致するものに
Sheet(データ) → Sheet(集計)
セル( i, "D")の値 → セル( j, "B") に
セル( i, "J")の値 → セル( j, "C")に
セル(j,"C")に値が入っているとき、セル(j,"D")に→Fまで(4回のみ)
A列のIDが一致するものがない時
セル( i, "A")の値 → セル( 最終,"A")に
セル( i, "D")の値 → セル( 最終, "B") に
セル( i, "J")の値 → セル( 最終,"C")に追加
というように、入れたいのですが、
以下のようなコードをネットで見つけ自分なりに考えて変更を加えてみましたが
あまり分かっていないためどのように変更すればいいのかよく分かりません。どなたかご教授ください。お願いします。
Sub Try()
Dim data_1() As String
Dim data As Long
Dim maxrow As Long
Dim t As Integer, f As Integer, y As Integer
Set ws1 = Worksheets("集計")
Set ws2 = Worksheets("データ")
Application.ScreenUpdating = False
maxrow = ws2.Range("a65536").End(xlUp).Row
With ws1
For i = 2 To Range("a65536").End(xlUp).Row
data = .Cells(i, 1)
f = 0
t = 0
With ws2
t = Application.WorksheetFunction.CountIf(.Range("a4:a" & maxrow), data)
If t > 0 Then
For n = 1 To maxrow
ReDim Preserve data_1(f)
If data = .Cells(n, 1) Then
data_1(f) = .Cells(n, 10)
f = f + 1
If t = f Then Exit For
Else
'A列にIDが存在しなければ追加する:ここの記述がよく分かりません。
data_1(f) = .Cells(n, 1)
End If
Next n
For y = 0 To UBound(data_1)
ws1.Cells(i, maxcol(i)) = data_1(y)
Next y
End If
End With
Next i
End With
Application.ScreenUpdating = True
End Sub
'--------------------------
Private Function maxcol(ByVal i As Long) As Integer
Dim j As Integer
With Worksheets("集計")
j = 4
Do While .Cells(i, j) <> ""
j = j + 1
Loop
maxcol = j
End With
End Function
No.4
- 回答日時:
>dictionary勉強中ですが・
dictionaryはVBSや.NETの概念ではないですか。エクセルVBA独自でそんな機能ありましたっけ。私の不勉強ならすみません。
何で難しい概念・仕組みで解決する必要があるのかな。
ーー
この質問をざっと見て、Findメソッドで「顧客ID」を同じものを他ファイル「集計データ」側で見つけ、そこにデータまたは「顧客ID」で集計済みデータを代入したらよいようなんだが。
こんなに長いコードにならないのではないですか。
見つからなければ最終行以下に追加。
ーー
両ファイルのレコードの並び順と重複出現の点は書いて置いてください。
集計データの顧客ID他は(前月作業とかで)暫定的に中身が出来上がっているのですか。
ーー
読者のことも考えて、読者に長いコードを解読させるコード実例は困る。今後は要点を文章で添えるとかポイントを絞る質問をお願いします。
No.3
- 回答日時:
私ならDictionaryを用いますが、過去ログを検索してみては?
”重複”関連も結構ありますよ。
(”OKWaveコミュニティー > デジタルライフ > ソフトウェア > Office系ソフト”
こちらとかの過去ログも参考になります。
ただ、重複しているものを上に・重複のないものを後ろには、
質問としては私は初めて見ましたので、まったく同じ物が
見つかるかはわかりません。
No.2
- 回答日時:
>セル(j,"C")に値が入っているとき、セル(j,"D")に→Fまで(4回のみ)
重複は4つまでしかないのでしょうか?
5つ以上あるとした場合、4つとは上からor下から?
>dictionary勉強中ですが・・・
Excel(エクセル) VBA入門:Dictionaryオブジェクトを利用する
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
ご参考まで。
この回答への補足
重複は4つまで、というか基本的にA列目の重複は一つしかありません。
見つからない場合はA列目データを集計シートに追加し
見つかったときには
四回までデータを取り込むようにしたいのです
説明不足ですみません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
S9タイプからXタイプにデータ...
-
ユーザーフォームのテキストボ...
-
多量のSUMIF式を軽くしたい
-
delphi でグラフ表示
-
なぜ通りがけをすると昇順に整...
-
外部データの更新がうまくでき...
-
【エクセル】測定時間がバラバ...
-
Accessで該当データにフラグを...
-
カンマからスラッシュに
-
send-recvで複数データの送受信
-
[C言語] コメント文字列を無視...
-
大学のゼミのレポートがムカつ...
-
VBAで「"」[']をエスケープする...
-
ActiveReportについて
-
ACCESSからEXCELに出力する際、...
-
<VB>String→Object
-
二分探索の平均探索回数
-
C#にてDropDownListの値を動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
S9タイプからXタイプにデータ...
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
Accessで該当データにフラグを...
-
ユーザーフォームのテキストボ...
-
シーケンサにパソコンからアク...
-
VBAを使ってOutlookメール本文...
-
EXCELVBAでSQLserverからデータ...
-
[C言語] コメント文字列を無視...
-
プログラミング python pandas ...
-
VBA 毎日取得するデータを順番...
-
<VB>String→Object
-
カンマからスラッシュに
おすすめ情報