以下のマクロはA列になっていますが
これを K列にしたいのですが
自分でもAに関連する場所をKにしたのですが失敗になってしまいます。
参考)http://32877.xii.jp/view/265 からのコピーです。
A列の情報をもとに重複のないワークシートを挿入し、
上記3つのリストをそれぞれのシートにコピペする方法。
Sub Make_Fruits_Sheet()
'====================================================================================
' A列のデータでフィルタリングして別シートを作成しフィルタリングしたリストをコピペする
'====================================================================================
ThisWorkbook.Activate
'//変数の定義
Dim arrayData, i, maxRow As Long
Dim cellData As String
Set arrayData = CreateObject("Scripting.Dictionary")
On Error Resume Next
'//A列の最終行を取得
If Len(Worksheets(1).Range("A1").Value) = 0 Then
maxRow = 0
ElseIf Len(Worksheets(1).Range("A2").Value) = 0 Then
maxRow = 1
Else
maxRow = Worksheets(1).Range("A1").End(xlDown).Row
End If
'//A列のデータを連想配列に格納する
For i = 2 To maxRow
'//セルの値を変数cellDataに格納
cellData = Range("A" & i).Value
'//連想配列に未登録であればセルの値を連想配列に格納する
If Not arrayData.Exists(cellData) Then
arrayData.Add cellData, cellData
End If
Next i
'//連想配列のキーを定義する
arrayDataKeys = arrayData.Keys
'//連想配列のデータ分繰り返して作業する
For i = 0 To arrayData.Count - 1
'//新しいワークシートを挿入する
Dim NewWorkSheet As Worksheet
Set NewWorkSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
'//新しいワークシートの名前を変える
NewWorkSheet.Name = arrayDataKeys(i)
'//元のシートをフィルタリングしてコピーする
With Worksheets(1).Range("A1")
.AutoFilter Field:=1, Criteria1:=arrayDataKeys(i) '1列目を連想配列のデータで絞り込む
.CurrentRegion.Copy
End With
'//新しいワークシートにペーストする
Sheets(arrayDataKeys(i)).Paste
Next i
'//フィルタを解除する
With Worksheets(1)
.Activate '最初のシートをアクティブにする
.Range("A1").AutoFilter 'フィルタを解除する
End With
'//オブジェクトを初期化して終了
Set arrayData = Nothing
End Sub
No.2ベストアンサー
- 回答日時:
まず確認です。
A列→K列に変更する前はうまく作動するのを確認されましたでしょうか?当方のエクセル(2007)では、冒頭に『Dim arrayDataKeys』が必要でした。
これはバージョンによるものかもしれませんが、一応追加しておいてください。
◆結論
以下のように変更が必要です。
変更前: .AutoFilter Field:=1, Criteria1:=arrayDataKeys(i) '1列目を連想配列のデータで絞り込む
変更後: .AutoFilter Field:=11, Criteria1:=arrayDataKeys(i) '11列目=K列
以下はA→Kに修正済みですよね?
Range("A1")
Range("A2")
Range("A" & i).Value
ご自分で試した結果、うまくいかなかった内容を記載されたほうが、よい回答がつきやすいですよ。
No.1
- 回答日時:
こんにちは
内容は見ていませんが、単純にA列→K列に置き換えれば良さそうですけれど・・・
>自分でもAに関連する場所をKにしたのですが失敗になってしまいます。
どう直したのかもエラーの内容もわからないので何ともわかりませんが、修正するのが難しいのであれば・・・
実行前に、『A列を新規挿入して、そこへK列の内容をコピーする』マクロを追加することで、修正しなくともそのまま利用ができるのではないでしょうか?
(必要なら、終了後にA列の削除も追加しておく)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
オートフィルタ使用時にCOUNTIF...
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
エクセル関数に詳しい方、教え...
-
Excel の複数シートの列幅を同...
-
エクセルで横並びの複数データ...
-
エクセル マクロ 標準モジュー...
-
【条件付き書式】countifsで複...
-
Excel 2段組み
-
Excel VBA ピボットテーブルに...
-
Excelでの並べ替えを全シートま...
-
エクセルで、チェックボックス...
-
【エクセル】1列のデータを交...
-
Excelで全てのシートに一気に列...
-
エクセルの列の限界は255列以上...
-
VBAで検索して、行をコピー&追...
-
【VBA】複数のシートの指定した...
-
エクセルVBA 行追加時に自...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
オートフィルタ使用時にCOUNTIF...
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
Excel の複数シートの列幅を同...
-
【VBA】シート名と見出しが一致...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
Excelでの並べ替えを全シートま...
-
【条件付き書式】countifsで複...
-
VLOOKアップ関数の結果の...
-
Excel VBA ピボットテーブルに...
-
エクセル マクロ 標準モジュー...
-
Excelで、ファイル名、シート名...
-
エクセルで、チェックボックス...
-
【VBA】複数のシートの指定した...
-
エクセルVBAで、ある文字を含ん...
-
スプレッドシートでindexとIMPO...
-
SUMPRODUCTにて別シートのデー...
おすすめ情報