[[20150602231136]] 『オートフィルタ抽出後データ先頭セルの選択後にそ』(せり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートフィルタ抽出後データ先頭セルの選択後にその選択セルを特定のセルに入力させるにはどの様に指示したら良いでしょう? 』(せり)

どうかご教示下さい

オートフィルタ抽出後データ先頭セルの選択後にその選択セルを特定のセルに入力させるにはどの様に指示したら良いでしょう? オートフィルタ抽出後データ先頭セルの選択は↓のものを入れています。(うまく走っていませんが…)

Range("A2:A" & 最終行 + 1).SpecialCells(xlCellTypeVisible).Areas(1).Cells(1).Select

Range("A65536").Select '必須項目のA列のシート最下行を選択
Selection.End(xlUp).Select '入力のあるセルまでジャンプ
最終行 = Selection.Row '選択セルの行数を取得

因みに、ある列の項目すべてでオートフィルタをしオートフィルタの表示順にプリントアウト出来る↓のVBAの★のところに入力しようと思います。

Sub test() 'この行から
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1") '←Sheet名は実際のSheet名に!
Set ws2 = Worksheets("sheet2")
ws2.Cells.Clear
For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Range(ws1.Cells(1, 1), ws1.Cells(i, 1)), ws1.Cells(i, 1)) = 1 Then
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws1.Cells(i, 1)


End If
Next i
j = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
Range(ws1.Cells(1, 1), ws1.Cells(j, 4)).AutoFilter field:=1, Criteria1:=ws2.Cells(i, 1)
ws1.PrintOut
Next i
End Sub 'この行まで

< 使用 Excel:Excel2013、使用 OS:Windows7 >


私が勘違いしているだけなのかもしれませんが

 >オートフィルタ抽出後データ先頭セルの選択後にその選択セルを特定のセルに入力させる

 1)★の位置は、まだオートフィルタ実行前ですが?
 2)特定セルとは?

(マナ) 2015/06/02(火) 23:46


うまく走ってないのは入力の位置のせいだったんですね
理解できていませんでした。
ws1.PrintOut
の前にオートフィルタ抽出後データ先頭セルの選択させるプログラムを入力させれば良いでしょうか?

特定のセルとは、すでにVLOOKUPが組んでるセルで そのセルに入力すると他のセルも反映します

(せり) 2015/06/02(火) 23:57


ws1.PrintOut の前に、特定セル=ws2.Cells(i, 1) でできませんか?
(マナ) 2015/06/03(水) 00:03

出来ませんでした

オートフィルタ抽出後データ先頭セルの選択で
一行目のタイトル行を飛ばしたい場合どうすればいいでしょう?

タイトル行をずっと選択してしまいます
(せり) 2015/06/03(水) 12:25


特定セルがどこのセルかわかりませんが

 仮に、セルF1だとしたら、

 Range(ws1.Cells(1, 1), ws1.Cells(j, 4)).AutoFilter field:=1,   Criteria1:=ws2.Cells(i, 1)
 ws1.Cells(1,6)=ws2.Cells(i, 1)   '★追加はこれだけ
 ws1.PrintOut

 でできませんか?

(マナ) 2015/06/03(水) 20:45


走ってはいますが、参照して欲しいセルがオートフィルタで毎回違うのですが拾ってないようです

実際に参照してほしいのはws1の2行目なので
ws1.Cells(1,6)=ws1.Cells(i, 2)
としているのですが、iでオートフィルタ毎になるはずなのですが出来ませんでした

(せり) 2015/06/04(木) 12:28


 コードの元はこちらで公開されているものを参考にされているのかと想像します。
http://rmoon3.seesaa.net/category/19068932-1.html
 
 > 実際に参照してほしいのはws1の2行目なので
 > ws1.Cells(1,6)=ws1.Cells(i, 2) 
 
ws1.Cells(i, 2) が何を返しているのかは、確認されましたか?
なんとなく
「2行目」を参照したいというのに変更後のコードは「2列目」を指定しているようですが、
ここに勘違いはありませんか?
 
勘違いがなく、フィルタ後の先頭行の2列目(隣の列?)の値を拾いたいとしている場合、
最初に示された下記コード
 
 > Range("A2:A" & 最終行 + 1).SpecialCells(xlCellTypeVisible).Areas(1).Cells(1).Select
 
を活用し、Offsetで2列目を見るようにする事で対処できそうですが
これの読み替えがうまく出来ていないとかそういう事ではなかろうかと想像してみます。
 
上記を踏まえ、参考になるであろう記述を示してみます。
 
    Debug.Print Range(ws1.Cells(2, 1), ws1.Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible).Areas(1).Cells(1).Offset(, 1).Address
 
この記述でもある条件の場合は期待するセル位置を返さないなどがある事までは確認していますが
そこまでのフォローはしないので触って確かめてみてください。
(ご近所PG) 2015/06/04(木) 15:58

間違えました

2列目のタイトルセルを除いた先頭セルを選択したかったのです

もっとスマートなプログラムでできそうな気がしてきました

Sheet2が要らないし

また詳しくアップしたいと思います
(せり) 2015/06/04(木) 19:20


具体的な表としては、以下シート”2015.4月”例です

   A     B    C    D   E   F
1                       
2         F2■←vlookup設定セル

4タイトル1 タイトル2 ・・・・
5 123    aaa
6 123 aaa
7 123 aaa
8 234 bbb
9 234 bbb
10 345 ccc
11 345 ccc
12 345 ccc
13 456 ddd
14 456 ddd
15 456 ddd

:
:

オートフィルタをしオートフィルタの表示順にプリントアウト出来るというのは一様出来ているように思えるのですが、やはりF2のセルにオートフィルタ抽出後B列の先頭セル選択後にその選択セルを入れるという部分が難しく

Sheet2にシート”2015.4月”のB列(タイトルも含む)をコピーしてそれをF2にへリンクさせようと組んでみました。そこでも、タイトルを含んで表示してしまい、困っています。

以下に今走らせているソースを書きますので、これに手直しをしていただけるとありがたいです。

お手数ですがお願いします。

Dim i,j,As Long
Dim ws1,ws2 As Worksheet

Set ws1 = Workseet("2015.4月分")
Set ws2 = Workseet("Sheet2")
ws2.Cells.Clear

For i = 2 To ws1.Cells(Rows.Count,1).End(xlUp).Row

If WorkshetFunction.CountIf(Range(ws1.Cells(5,1),ws1.Cells(i,1)),ws1.Cells(i,1)) = 1 Then

ws2.Cells(Rows.Count,1).End(xlUp).offset(1) = ws1.Cells(i,1)
ws2.Cells(Rows.Count,2).End(xlUp).offset(1) = ws1.Cells(i,2)

End If
Next i

j = ws1.Cells(Rows.Count,1).End(xlUp).Row
For i = 2 To ws2.Cells(Rows.Count,1).End(xlUp).Row

Range(ws1.Cells(5,1),ws1.Cells(j,2)).AutoFilter field:=1,Criterial:=ws2.Cells(i,1)

ws1.Cells(2,6) = ws2.Cells(i,2)

ws1.PrintOut

Next i

(せり) 2015/06/12(金) 01:29


うまく表が表示されませんでしたが、abcdはB列のものです。

よろしくお願いいたします。
(せり) 2015/06/12(金) 01:34


これでどうなりますか。
 For i = 2 To ws1.Cells(Rows.Count,1).End(xlUp).Row
 を
 For i = 5 To ws1.Cells(Rows.Count,1).End(xlUp).Row

(マナ) 2015/06/12(金) 05:33


i=5にしただけでうまく行くようになっていると思われます

Sheet2のデータがタイトル行以下のものをコピーするようになっていました

大量にデータがあるので印刷して無いので
最終的に印刷してみて結果をみたいと思います

また不具合が出ましたら相談させてください

ありがとうございました
(せり) 2015/06/12(金) 12:24


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.