Excel VBAついて例えばシート1のB列シート2のc

Excel VBAついて例えばシート1のB列シート2のc列比較てB列なければC列のセルB列貼り付けるいうコード作成たいのif。VBAついて、例えばシート1のB列シート2のc列比較て、B列なければ、C列のセルB列貼り付けるいうコード作成たいの、if sheet1(B)〈〉sheet2(C) thenするエラーでます、シンプル列比 較たいの、いい方法でょうか Excel。列を特定するには。とかや。などの書き方
がありますが。今回はを使うと便利です。は。任意の
セルに対して使い「このセルを含む列全体」を表します。最後の行の下にデータを追加する方法。シート最終行の次にデータを追加するにはシートの一番下にデータを挿入する
方法は。 = , + というVBA構文を
使います。 これは。列の最後の行が何行目となるのか?を調べることのここ
でのポイントは。最初の の中のの部分だけで。列ならここをに。 列
ならに。ただ変更すればよいだけです。なお。この行のお尻に「 + 」を
付けている理由は。単純に最後の行の次の行空白のにデータを表示させたいため
です。

その他。マクロを有効にして。このテキストボックスを押さないとファイルのシートこの
場合[]を見ることができません。 = , = , &#;
変数にセルアドレス &#;=列の値 = , &#;もし列番号が~,,列の場合
ボックスで。「マクロ名」で表示されているマクロ名を修正し必要なければ
このまま。「新規作成」ボタンを押す。 手順ので作成したマクロコードを
をとの間の行に貼り付けます。 このマクロコードは。 「標準モジュール

雰囲気、以下でどうなりますかの前に、想定データ量?行数はどれくらいですか?それによっては、動くだけで良い???とか?100,000 行では、さすがにそれなりになりますが、10,000 行程度なら、待ち時間はない???かと確認は、新規ブックを開き、標準モジュールに以下を記述して、Sheet1 / Sheet2 があることを確認後、testData で確認用データを作成しますその後、Samp1 or Samp2 を実行してみますやっていることは、Samp1:配列と Dictionary の基本的?な使い方で、Sheet1 の B 列の内容を Dictionary に覚えますSheet2 の C 列を入手後、Dictionary に覚えてなかったら、詰め直し詰め直した分を、Sheet1 の B 列下に書き出して???終わり※ データは2行目から始まっている前提で、値のみ※ ★ 部分は、Sheet2 の C 列内に重複があったとした時、その重複を排除しながら上に詰めたい場合、有効にSamp2:Sheet2 の C 列の内容を、Sheet1 の B 列下にコピー後、重複の削除※ 元々 Sheet1 の B 列に重複があるのなら使えない方法どうなりますかOption ExplicitPublic Sub Samp1???Dim dic As Object???Dim vA As Variant???Dim i As Long, k As Long???Set dic = CreateObjectScripting.Dictionary???With WorksheetsSheet1??????With .RangeB1, .CellsRows.Count, B.EndxlUp?????????vA = .Value?????????For i = 2 To UBoundvA????????????If vAi, 1 Then dicvAi, 1 = Empty?????????Next?????????With WorksheetsSheet2????????????With .RangeC1, .CellsRows.Count, C.EndxlUp???????????????vA = .Value????????????End With?????????End With?????????k = 0?????????For i = 2 To UBoundvA????????????If Not dic.ExistsvAi, 1 Then???????????????k = k + 1???????????????vAk, 1 = vAi, 1'???????????????dicvAi, 1 = Empty ' ★????????????End If?????????Next?????????If k0 Then????????????.Offset.Rows.Count.Resizek.Value = vA?????????End If??????End With???End With???Set dic = NothingEnd SubPublic Sub Samp2???Dim rng As Range???Application.ScreenUpdating = False???With WorksheetsSheet1??????Set rng = .CellsRows.Count, B.EndxlUp.Offset1??????With WorksheetsSheet2?????????.RangeC1, .CellsRows.Count, C.EndxlUp.Copy rng??????End With??????.RangeB1, .CellsRows.Count, B.EndxlUp _?????????.RemoveDuplicates 1, xlNo???End With???Application.ScreenUpdating = TrueEnd Sub' 確認用データ作成Public Sub testData???Dim vA As Variant, vC As Variant, v As Variant???Dim sS As String???Dim i As Long, j As Long, k As Long, n As Long???Randomize???vC = Array _?????????Array1000, Sheet1, B, _?????????Array1000, SHeet2, C _?????????k = LBoundvC???sS = InputBoxSheet1 行数/Sheet2 行数, , 1000/1000???If sS =Then Exit Sub???sS = sS/???j = 0???For i = k To UBoundvC??????n = ValSplitsS, /j??????If n30 Then n = 30??????vCik = n??????j = j + 1???Next???Application.ScreenUpdating = False???For Each v In vC??????ReDim vA0 To vk, 1 To 1??????vA0, 1 = 項目??????n = 0??????For i = 1 To UBoundvA?????????n = n + Int2 * Rnd + 1?????????vAi, 1 = An??????Next??????With Worksheetsvk + 1?????????.Cells.Delete?????????.Cells1, vk + 2.ResizeUBoundvA + 1.Value = vA?????????.Columns.AutoFit??????End With???Next???Application.Goto WorksheetsvC0k + 1 _??????.Cells1, vC0k + 2.EndxlDown, True???Application.ScreenUpdating = TrueEnd Sub定跡的手順です。Sub sampleDim rng0 As Range, rng As RangeSet rng0 = WorksheetsSheet1.RangeB:BWith WorksheetsSheet2For Each rng In .RangeC1, .CellsRows.Count, 3.EndxlUpWith rngIf WorksheetFunction.CountIfrng0, .Value = 0 Then .Copy rng0.CellsRows.Count.EndxlUp.Offset1 End IfEnd WithNext rngEnd WithEnd Sub

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です