シート1 シート2
A列 A列
AAA AAA
BBB BBB
CCC DDD
AAA CCC
↓
シート3
A列
AAA
BBB
CCC
DDD
上記のように複数シートに入力されているデータを別のシートに重複なしで抽出するVBAを作りたいので、お知恵を貸して頂きたいです。
VBA初心者ですので、ご迷惑をおかけするとは思いますが、よろしくお願いします。
ちなみに
単一の列を同じシートの列に抽出するVBAはネットで探して成功しました。
それが以下のコードです。
Sub リスト作成()
Dim A As New Collection, i As Long
On Error Resume Next
For i = 3 To Cells(Rows.Count, 3).End(xlUp).Row
A.Add Cells(i, 3), Cells(i, 3)
Next i
On Error GoTo 0
For i = 1 To A.Count
Cells(i + 2, 6) = A(i)
Next i
End Sub
No.8ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Option Explicit
Dim sh3 As Worksheet
Dim dicT As Object
Dim row3 As Long
Public Sub 重複無()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow3 As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
Set sh3 = Worksheets("Sheet3")
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
maxrow3 = sh3.Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行を求める
sh3.Range("B4:B" & maxrow3).ClearContents 'B列4行以降をクリア
row3 = 4
Call シート3出力(sh1)
Call シート3出力(sh2)
MsgBox ("完了")
End Sub
Private Sub シート3出力(ByVal ws As Worksheet)
Dim maxrow As Long
Dim wrow As Long
Dim key As String
maxrow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行を求める
For wrow = 3 To maxrow
key = ws.Cells(wrow, "A").Value
If key <> "" Then
If dicT.exists(key) = False Then
dicT(key) = True
sh3.Cells(row3, "B").Value = key
row3 = row3 + 1
End If
End If
Next
End Sub
No.9
- 回答日時:
質問はあくまで重複をなくすことではありますが、実際には重複に絡むデータ列が存在しているとかでは?
とまずは気になりますね。
その重複削除した際にデータを追従させる手段も悩まれてたりはしませんか?
⇒セル範囲の取得法など。
違ってたらスル~して下さいな。
No.6
- 回答日時:
こんにちは
説明にはA列と書いてあって、コードでは3列目(=C列)をいじくっているように見えるけれど、本当のところは何をなさりたいのでしょうか?
>貼り付ける場所がデータ量によって異なりませんか?
VBAなんだから、調べれば良いだけ。
なさりたいことがよくわからないので、勝手に妄想してみました。
(当たるも八卦ですが、A列を集約します)
・「指定シートが存在しない」など、エラーチェックは一切行省いてあります。
Sub Q13000652()
Dim sh As Worksheet, rg As Range
Dim rw As Long, sName
With Worksheets("Sheet3")
.Columns(1).ClearContents
Set rg = .Cells(1, 1)
For Each sName In Array("Sheet1", "Sheet2")
Set sh = Worksheets(sName)
rw = sh.Cells(Rows.Count, 1).End(xlUp).Row
rg.Resize(rw).Value = sh.Cells(1, 1).Resize(rw).Value
Set rg = rg.Offset(rw)
Next sName
.Columns(1).RemoveDuplicates (1)
End With
End Sub
No.5
- 回答日時:
dictionary 重複なし vba
で検索するとサンプル見つかると思いますよ。この用途だとCollectionよりDictionaryの方が分かりやすいです。
頑張って。
No.3
- 回答日時:
質問者さんは勘違いされていますね。
データ範囲もVBAで指定するんですよ。
手作業で範囲を指定するとき、何を基準にデータ範囲と判断するか。
それを明確にしてみましょう。
その判断に基づいて ”プログラムを組む” のです。
No.2
- 回答日時:
自分もコピーして一覧を作ったうえで重複を削除することを薦めます。
それにそのほうが処理が速い。
データ範囲を指定して複製。
Sheet3の1行目に【挿入貼り付け】。
これをSheet1とSheet2の両方で行った後に、
Sheet3で重複削除。
・・・余談・・・
質問文は
「これを作り直せ。オレ様の成果として使ってやるwww」
って内容になっていますが、それで間違いないでしょうか。
ここは自力で問題を解決できるようになるためのアドバイスを受ける場所です。
そのマクロを直す中で何が分からないのかをピンポイントで質問するようにしてみましょう。
例:
「マクロを探してきましたが、解説がないため意味不明です。
どなたか解説をお願いします」
「シートを指定する書き方が分かりません」
など。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
エクセル 重複したデータを別シートに抽出させる
Excel(エクセル)
-
離れた2列を比べて重複しないデータを隣の列に表示させる方法 Excel
Visual Basic(VBA)
-
エクセルの複数シートの重複を確認したい
Excel(エクセル)
-
-
4
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
5
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
6
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
9
エクセルで特定の列が0表示の場合、その行を非表示にしたい
Excel(エクセル)
-
10
VBAで変数に関数式の結果をセットする場合
Excel(エクセル)
-
11
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
12
EXCELで2つのシートから一致しない情報だけ抽出
Excel(エクセル)
-
13
Excelマクロ 空白セルを無視してCSV出力
Excel(エクセル)
-
14
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
15
複数のシートに重複する文字列の抽出
Excel(エクセル)
-
16
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
17
エクセル 重複 隣の列 一番上だけの数値を残す VBA
Excel(エクセル)
-
18
EXCEL VBA Dictionaryで複数の値を格納→離れた位置に出力する方法
Excel(エクセル)
-
19
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
20
VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
グラフマクロで系列を変数にす...
-
100万件越えCSVから条件を満た...
-
EXCELのSheet番号って変更でき...
-
Excel VBA オートフィルターで...
-
Excel2013で切り取り禁止
-
Excelで横書き50行の漢字テス...
-
VBAを使って複数のシートから抽...
-
楽天RSSからエクセルVBAを使用...
-
VBA 空白行に転記する
-
エクセル 複数シートの同一セ...
-
マクロ実行後に別シートの残像...
-
アクセスからエクセルへ出力時...
-
テキストボックスから、複数の...
-
月毎に現金出納帳に転記するコ...
-
複数シートの複数列に入力され...
-
Count Ifのセルの範囲指定に変...
-
vba 連続するとうまく作動せず
-
VBA 別ブックからの転記の高速...
-
VB2005でExcelのグラフのデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
VBAコードについて
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
VBA 別ブックからの転記の高速...
-
【VBA】特定の条件でセルをコピー
-
VBA別シートの最終行の次行へ転...
-
100万件越えCSVから条件を満た...
-
VBAで変数の数/変数名を動的に...
-
Changeイベントで複数セルへの...
-
楽天RSSからエクセルVBAを使用...
-
Count Ifのセルの範囲指定に変...
-
Unionでの他のシートの参照につ...
-
Excel2013で切り取り禁止
-
Excel VBA オートフィルターで...
-
VBA 実行時エラー1004 rangeメ...
-
複数シートの複数列に入力され...
-
VBA Userformで一部別シートに...
-
ExcelのVBマクロを、バックグラ...
おすすめ情報
回答していただき、ありがとうございます。
その方法は各シートにあらかじめ、データがどのくらい入っているかが分かっていればできると思います。
できれば知識がない人でもボタン1つでできるようにVBAで探しています。
回答していただき、ありがとうございます。
その方法だと、データをコピーして貼り付ける場所がデータ量によって異なりませんか?
また、余談の件ですが私は「分からない問題に対して答えを教えてもらう場所」だと認識しています。
学校であれば、次回からできるようにするが目的かもしれませんが、私はそうではありません。
質問はあくまでも例として挙げさせて頂きました。
実際は
シート1、2はC列の3行目から始まっています。
シート3はB列の4行目から始まっています。
宜しくお願いいたします。