No.2ベストアンサー
- 回答日時:
こんにちは。
これ自体は、たぶん、記録マクロで十二分に対応できるのではないかと思います。
ただ、掲示板でVBAの技術を錆びつかせないようにしたい人は、もう少し考えたものを作りたいわけだと思います。最初のマクロは、今は古典的にはなりましたが、10年ぐらい前は、みんな、こんなものを書いていたのです。2番目は、今風なのかな?
'//
Sub CombineTwoColumns()
Dim r1 As Range
Dim r2 As Range
Dim ar1 As Variant
Dim ar2 As Variant
Dim ar As Variant
Dim Stocks As Variant
Dim i As Long, j As Long, k As Long, t As Long
Dim N As Long
'-------配列作成---------
With Worksheets("Sheet1")
Set r1 = .Range("L2", .Cells(Rows.Count, "L").End(xlUp)) '見出し行を除く2行目
End With
ar1 = r1.Value
ar1 = Application.Transpose(ar1)
ar = ar1
With Worksheets("Sheet2")
Set r2 = .Range("K2", .Cells(Rows.Count, "K").End(xlUp))
End With
ar2 = r2.Value
ar2 = Application.Transpose(ar2)
t = UBound(ar1) + UBound(ar2)
ReDim Preserve ar(0 To t - 1) '本来の配列の0発進に戻す
j = 1
For i = UBound(ar1) + 1 To t
ar(i - 1) = ar2(j)
j = j + 1
Next i
'------ユニークサーチアルゴリズム(自作)--------
ReDim Stocks(0)
N = UBound(ar)
Stocks(0) = ar(0)
k = 0
For i = 0 To N
For j = 0 To k
If ar(i) = Stocks(j) Then
Exit For
ElseIf j = k Then
k = k + 1
ReDim Preserve Stocks(0 To k)
Stocks(k) = ar(i)
End If
Next j
Next i
'---------出力------------
k = UBound(Stocks)
With Worksheets("Sheet3")
.Columns(1).ClearContents '出力先の消去
.Range("A1").Resize(k + 1).Value _
= Application.Transpose(Stocks)
End With
End Sub
'//
'//
'---------記録マクロ形式---------------
Sub CombineTwoColumns2()
Dim r1 As Range
Dim r2 As Range
With Worksheets("Sheet1")
Set r1 = .Range("L2", .Cells(Rows.Count, "L").End(xlUp))
End With
With Worksheets("Sheet2")
Set r2 = .Range("K2", .Cells(Rows.Count, "K").End(xlUp))
End With
With Worksheets("Sheet3")
.Columns(1).ClearContents
r1.Copy .Cells(1, 27)
r2.Copy .Cells(r1.Rows.Count + 1, 27) '作業列(AAを使う)
.Range(.Cells(1, 27), .Cells(r1.Rows.Count + r2.Rows.Count, 27)) _
.RemoveDuplicates Columns:=1, Header:=xlNo
.Range(.Cells(1, 27), .Cells(Rows.Count, 27).End(xlUp)).Copy .Range("A1")
.Range(.Cells(1, 27), .Cells(Rows.Count, 27).End(xlUp)).ClearContents
End With
End Sub
'//
この回答へのお礼
お礼日時:2015/03/08 15:52
いつもお世話になっています。
古典や今風なんてあるんですね。
どちらも私にとっては『素晴らしい世界』です。(脱帽)
言わずもがな、当然だと思いますが
教えて頂いた両方のマクロの動作を実行、確認、目から鱗な速さでした。
No.1
- 回答日時:
この手の質問で確認しておきたいことですが
1、Sheet1にあってSheet2にない物(或いはその逆)
2、Sheet1とSheet2のデータをつなげて、2個以上のデータを全て削除
3、Sheet1とSheet2のデータをつなげて、重複を削除
>重複していないものをSheet3のA列へ転記。
たぶん、2が希望と思いますが
>重複しているものは一つだけSheet3へ転記。
たぶん、3が希望と思いますが
とりあえず、手作業で
1、新しいシートに Sheet1のL列を貼り付け
2、その下に、Sheet2のK列を貼り付け
2の場合は
3、B列に Countif関数を入れて、オートフィルターで一個のデータのみ抽出
3の場合は
3、フィルターオプションの機能を使って、重複データを省いて抽出
4、抽出されたA列をコピーして、Sheet3のA列に貼り付ける。
これで、希望の結果が得られれば、マクロの記録を実施
出来たコードを改良して使いやすい様に仕上げる。
この様な感じで進めて見ては如何でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) エクセルの日付抽出 2 2023/02/03 15:02
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 行の値を累計したい...
-
アンプの電力を教えて下さい
-
ACアダプタについて教えてくだ...
-
力率80%の根拠
-
アプリ life360 について、 ネ...
-
クランプ回路
-
電気回路のπ型回路の2端子対回...
-
RLC直列回路において、R=5ΩL=30...
-
「電流を印加する」という表現...
-
質問です。3Aって何wですか? ...
-
開放電圧って?
-
単相3線100/200V分電盤の主幹選定
-
三相同期発電機の公式にある√3
-
「ヒューズ」の選定のしかたを...
-
三相三線式のS相は接地されてい...
-
モーターの電流値が上がるのは...
-
パルスとレベルについて
-
負荷?無負荷?
-
極性試験の必要性
-
共振回路の応用例
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 行の値を累計したい...
-
剛体の力学の問題 正三角形
-
球殻状のコンデンサの電界を求...
-
統計学(離散型確率変数)の問...
-
材料力学の問題ですが
-
4次方程式の固有値の求め方
-
トラックへの荷物の積みかたを...
-
iPad Airの購入について
-
電気回路 Y-Δ変換について
-
電気回路の閉路方程式の問題
-
材料力学について質問です。 問...
-
エクセル 指定した複数の文字の...
-
θ=(C1/r^2)+C2•••(8) 定数C1,C2...
-
2つのシートを重複検索したあと...
-
ブタジエン(M1)/アクリロニトリ...
-
作った表から一覧表を作成をしたい
-
流体力学の公式証明が解らない
-
抵抗値計算
-
対称・反対称な波動関数
-
(3)(4)がわからないです。 (1) ...
おすすめ情報