
知恵をお貸しください。
今、テストの点数表を作成しています。
下記の画像のように、結合したセルをVBAを使って抽出出来たらと考えています。
セルを結合しているので、普通に抽出すると1行になってしまいました。
そこで、ネットで調べたところ、表のセル以外のセルにIF関数を挿入、オートフィルでコピー、
コピーしたものを隣の列に「値で貼付」、表の氏名にあたるC6、7に「数式で貼付」すると
結合したままで抽出することが出来ました。
※表以外のセルAM6に、IF(C6="",AM5,C6)を挿入→オートフィルでAM7にコピー→隣の列に「値で貼付」
AM5 AN5
AM6山田 太郎 AN6山田 太郎
AM7山田 太郎 AN7山田 太郎
「値で貼付」したAN6、7をコピー→氏名にあたるC6,7に「数式で貼付」
これを、オートフィルターと合わせてマクロで自動化出来ればと思うのですが、可能なのでしょうか?
名前抽出か高校名抽出のボタンを押せば、結合したセルで抽出出来るといいなと思っています。
私自身がまだ簡単なマクロしか組めないのですが、皆さんの知恵をお借り出来ればと思います。
分かりにくい文章で申し訳ありませが、宜しくお願い致します。

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
好みにもよりますが、VBAでやるなら特にオートフィルタにこだわる必要はないと思います。
対象外の行を非表示にすれば良いだけなので…。例えば、こんな感じです。
Sub sample()
Dim myRng As Range
Dim c As Range
Dim firstAddress As String
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False
With Range("C6:C" & Cells(Rows.Count, "G").End(xlUp).Row)
Set c = .Find(Range("D2").Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If myRng Is Nothing Then
Set myRng = c
Else
Set myRng = Union(myRng, c)
End If
Set c = .FindNext(c)
If c Is Nothing Then Exit Do
If c.Address = firstAddress Then Exit Do
Loop
End If
.EntireRow.Hidden = True
End With
If Not myRng Is Nothing Then
For Each c In myRng
c.MergeArea.EntireRow.Hidden = False
Next
End If
Application.ScreenUpdating = True
End Sub
ありがとうございます。
上司からの指示がオートフィルターでということですので・・。
でも、非表示でという発想が思いつかなかったので勉強になりました。
No.2
- 回答日時:
こちらでは問題なく抽出できていますので、
貴方様のデータが、添付された図と違っているとしか考えられません。
>1行のみの抽出で名前が入っている行が全て抽出されてしまいました
のような動作はCells(1, "D")に値が記入されていたら考えられません。
No.1
- 回答日時:
これでどうかな
'図の左上がA1として、セルアドレスを書いています。
'AM列を作業用に使っています。
Sub 名前抽出AutoFilter()
Dim iRow As Long, xRow As Long
Dim NameCol As String
Dim FilterCol As String
Dim ArrayArea
Dim FilterRge As Range
NameCol = "C"
FilterCol = "AM"
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
xRow = Cells(Rows.Count, NameCol).End(xlUp).Row + 1
ArrayArea = Cells(1, NameCol).Resize(xRow).Value
ArrayArea(4, 1) = "作業列"
For iRow = 5 To xRow
If ArrayArea(iRow, 1) = "" Then ArrayArea(iRow, 1) = ArrayArea(iRow - 1, 1)
Next iRow
Cells(1, FilterCol).Resize(xRow).Value = ArrayArea
Set FilterRge = Range("A4:" & FilterCol & xRow)
FilterRge.AutoFilter _
Field:=Cells(1, FilterCol).Column, _
Criteria1:=Cells(1, "D").Value
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 11:55
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) エクセルで#以降の文字を取得したい 1 2022/03/28 13:14
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) エクセルについて教えてください。 3 2023/03/24 08:34
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) Excelにて、セルに入力してある文字の中から文字と最後の数字のみ切り取り貼り付けるVBA 5 2022/12/27 08:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルのオートフィルタで最...
-
エクセルで時刻(8:00~20:00)...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
access マクロでのフィルタの...
-
Excelで文字を入力と自動的にフ...
-
オートフィルタで3つ以上の条...
-
オートフィルタは金額の桁カン...
-
Excel 日付・時刻データの抽出
-
【Excel/関数/条件付き書式】月...
-
エクセルのオートフィルタで抽...
-
成績処理
-
Excelオートフィルターで絞り込...
-
オートフィルタで文字化け?
-
エクセル関数で、数字の入った...
-
オートフィルタで未入力(空白...
-
エクセルで行の数字が飛び飛び...
-
Excel共有ブックのオートフィル...
-
エクセルのオートフィルタ:フ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルのオートフィルタで最...
-
エクセルで時刻(8:00~20:00)...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
エクセル関数で、数字の入った...
-
エクセルにて、フィルタをかけ...
-
オートフィルタで3つ以上の条...
-
access マクロでのフィルタの...
-
オートフィルタは金額の桁カン...
-
エクセルで、条件に一致した行...
-
【EXCEL】条件に一致した最新デ...
-
【Excel/関数/条件付き書式】月...
-
オートフィルタで選択したデー...
-
Excelのフィルターで抽出した状...
-
Excel共有ブックのオートフィル...
-
データの抽出を教えてください
-
エクセルで隔週をもとめる
-
エクセル・条件付で行を削除す...
-
ACCESSでスペースの抽出
おすすめ情報
項目が増えた為、作業列をQKとQLに変更してマクロを組み立ててみました。
マクロの記録を使ってほぼ編集してないので、かなり拙いコードだと思います(^^;
これを実行したところ、「このブックでマクロが使用できないか、または全てのマクロが無効になっている可能性があります。」という表示が出ました。
マクロの設定等は変更していないのですが・・。
コードが間違っているからとかなのでしょうか?
Range("QK6").FormulaR1C1 = "=IF(RC[-450]="""",R[-1]C,RC[-450])"
Range("QK6").AutoFill Destination:=Range("QK6:QK209"), Type:=xlFillDefault
Range("QK6:QK209").Select
Selection.Copy
Range("QL6:QL209").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Copy
Range("C6:C209").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A5:G5").Select
Application.CutCopyMode = False
ActiveCell.Range("A1:G1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$5:$G$209").AutoFilter Field:=3, Criteria1:="*" & Range("D2").Value & "*"
Range("QK6:QL211").Select
Selection.ClearContents
文字数がオーバーして分けて投稿しました。
見にくくてすみません。
ご意見いただければ幸いです。