A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
こんばんは!
横からお邪魔します。
>book1は閉じたままで・・・
結構厄介なので、一旦開いて処理するようにしてみました。
尚、Book1のSheet1、A~D列データで重複しているものはない!という前提です。
(万一重複している場合は一つだけが表示されます)
一例です。
Book2の標準モジュールにしてください。
Sub Sample1()
Dim myDic As Object
Dim i As Long, j As Long
Dim myStr As String, buf As String
Dim wB As Workbook, wS As Worksheet
Dim myPath As String, fN As String
Dim myKey, myR, myAry
Set myDic = CreateObject("Scripting.Dictionary")
myPath = "保存場所のパス" & "\"
fN = "Book1.xlsx"
Workbooks.Open (myPath & fN)
Set wB = ActiveWorkbook
Set wS = wB.Worksheets("Sheet1")
myR = Range(wS.Cells(1, "A"), wS.Cells(10000, "E")) '//←10000行限定★//
For i = 1 To UBound(myR, 1)
If myR(i, 5) = "" Then
For j = 1 To 4
buf = buf & myR(i, j) & "_"
Next j
myStr = Left(buf, Len(buf) - 1)
If Not myDic.exists(myStr) Then '//←念のため//
myDic.Add myStr, ""
End If
End If
buf = ""
Next i
myKey = myDic.keys
With ThisWorkbook.Worksheets("Sheet1")
.Cells.ClearContents
myR = Range(.Cells(1, "A"), .Cells(UBound(myKey) + 1, "D"))
For i = 0 To UBound(myKey)
myAry = Split(myKey(i), "_")
For j = 0 To UBound(myAry)
myR(i + 1, j + 1) = myAry(j)
Next j
Next i
Range(.Cells(1, "A"), .Cells(UBound(myKey) + 1, "D")) = myR
End With
Set myDic = Nothing
wB.Close
MsgBox "完了"
End Sub
※ コード内の「保存場所のパス」の部分はお手元の保存場所フォルダのパスにしてください。
こんな感じではどうでしょうか?m(_ _)m
No.5
- 回答日時:
標準モジュールへ登録してください。
Const folder As String = "D:\goo\excel"
はBook1を格納しているフォルダです。あなたの環境にあわせて適切な設定を行ってください。
Public Sub E空列転記()
Const folder As String = "D:\goo\excel"
Dim wb1 As Workbook
Dim sh1 As Worksheet
Dim wrow As Long
Dim rng As Range
ThisWorkbook.Worksheets("Sheet1").Cells.Clear
Set wb1 = Workbooks.Open(folder & "\" & "Book1.xlsx")
Set sh1 = wb1.Worksheets("Sheet1")
Set rng = Nothing
For wrow = 1 To 10000
If sh1.Cells(wrow, "E").Value = "" Then
If rng Is Nothing Then
Set rng = sh1.Range("A" & wrow & ":D" & wrow)
Else
Set rng = Union(rng, sh1.Range("A" & wrow & ":D" & wrow))
End If
End If
Next
If Not (rng Is Nothing) Then
rng.Copy Destination:=ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
End If
wb1.Close
MsgBox ("完了")
End Sub
No.4
- 回答日時:
こんにちは
不明点は勝手に妄想。
ブックはThisworkbookと同じPathに存在すると仮定
Sub Sample()
Dim wb1, wb2, f1, f2
Const book1 = "book1.xlsx"
Const book2 = "book2.xlsx"
f1 = False
f2 = False
On Error Resume Next
Set wb1 = Workbooks(book1)
If Err.Number = 9 Then
On Error GoTo 0
f1 = True
Set wb1 = Workbooks.Open(ThisWorkbook.Path & "\" & book1)
End If
On Error Resume Next
Set wb2 = Workbooks(book2)
If Err.Number = 9 Then
On Error GoTo 0
f2 = True
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\" & book2)
End If
On Error GoTo 0
wb1.ActiveSheet.Cells.AutoFilter Field:=5, Criteria1:="<>"
wb1.ActiveSheet.Columns("A:D").Copy Destination:=wb2.ActiveSheet.Cells(1, 1)
wb1.ActiveSheet.Cells.AutoFilter
Application.DisplayAlerts = False
If f1 Then wb1.Close SaveChanges:=False
If f2 Then wb2.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
No.3
- 回答日時:
なんとなくですがオートフィルターでE列のフィルター項目の下から2番目にある「(空白セル)」を選択してフィルターを掛け、それをコピー
するだけで済むと思うのですが何か問題が有るのでしょうか?No.2
- 回答日時:
No1です。
1点、誤記がありましたので訂正します。5.book1の対象データの行数は10000行固定で良いのでしょうか。それとも変わることがあるのでしょうか。
No.1
- 回答日時:
私が回答するという意思表示ではありませんが、
以下のことが明確になれば、良い回答が得られるかと。
1.book1の拡張子はxlsxですか。
2.book1は既に開いているという前提で良いのですか。それとも、マクロでオープンすることを要求されているのですか。
3.book1の対象データのシート名はなんでしょうか。("Sheet1"でよいのですか)
4.book2の引用先のシート名はなんでしょうか。("Sheet1"でよいのですか)
5.book1の対象データの行数は10000万行固定で良いのでしょうか。それとも変わることがあるのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
Excelで2行単位のソートの出来...
-
Excelで2つのデータの突合せを...
-
複数の条件に合う行番号を取得...
-
エクセルで日付から日にちを削...
-
エクセルVBA C列に特定の文字列...
-
Excelの30個ずつの平均値の出し方
-
Countifよりも早く重複数をカウ...
-
エクセルで、重複データを除外...
-
excel:別シートの値を飛び飛び...
-
エクセルの重複データの抽出
-
エクセルで重複データを削除す...
-
エクセル フリーソフト 集計...
-
Excel 2003 データの個数の数え方
-
Excel 列データのランダムな並...
-
数式のみで 行のデータで最後に...
-
重複データの個数別を集計した...
-
エクセル2003でマクロでマクロ...
-
エクセルのIF関数の並べ替え
-
EXCELでsheet1のデータをsheet2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
エクセルで日付から日にちを削...
-
Excelで2つのデータの突合せを...
-
Excelで2行単位のソートの出来...
-
複数の条件に合う行番号を取得...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Countifよりも早く重複数をカウ...
-
Excelの30個ずつの平均値の出し方
-
VBA 数式を最終行までコピー
-
エクセルVBA C列に特定の文字列...
-
エクセルで横並びの複数データ...
-
エクセル2016にて、行挿入&コピ...
-
【Excel】小計単位で並べ替えを...
-
VBA 大きなtxtテキストファ...
-
500行の中から、多い順に抽出す...
-
エクセル~空白のセルのある行...
-
エクセルで1つの会社名に対して...
-
【エクセル】1列内に複数ある同...
-
Excel VBA 空白セル以下のデー...
おすすめ情報
ご指摘ありがとうございます。
book1はxlsxです。
book1も、book2も、シート名はsheet1です。
book1は閉じたままで、book2に作ったマクロ(か関数)で引用したいと思っています。
行範囲は10000で固定です。
お願いします。