- ベストアンサー
エクセルで抽出(?)
エクセルで名簿を管理しているのですが、メアドだけ、住所だけ抽出(リスト化)することは可能でしょうか? たとえば、「三の倍数行の二列目のセルを抽出(リスト化)」と言ったことです。 わかりにくいと思いますがどうぞお願いしますm(_ _)m
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
例えばCの列に1行目から入力していくとすると、 (C1にB3の値、C2にB6の値、C3にB9の値・・・) 関数だったら =OFFSET($B$3,(ROW(C1)-1)*3,0,1,1) もしくは =INDIRECT("B" & (ROW(C1))*3) これを下のほうへドラッグしていけばOKです。 といった方法があります。ちなみに上式初めの式は、B3セルから、(現在の自分自身の行数×3)だけ下にオフセットしたセルの値を参照する。という意味、2番目の式は、文字列で示されたセルを参照するという意味です。それぞれの式中の「ROW」関数は、カッコ内のセルが何行目であるかを返す関数です。 これらを利用する際は、リスト化する行を選択した後、セルの書式設定で「表示形式」の「種類」を、「[=0]""」としておけば、何も無いセルには何も表示されなくなります。(上記設定をしないと、何も無いセルに「0」が表示されてしまいます) マクロでやるのであれば、標準モジュールに以下のソースを貼り付け、実行します。 Sub MakeList() Range("C:C").Clear i# = 1 Do While (1) If Cells(3 * i, 2).Value = Empty Then Exit Sub Cells(i, 3).Value = Cells(3 * i, 2) i = i + 1 Loop End Sub お好きな方法をご利用ください。
その他の回答 (4)
- at121
- ベストアンサー率41% (85/206)
アクティブのシートのリストから メールアドレス *@*.* 形式 のセルを見つけ このセルと 相対位置 下 住所 右横 名前 斜め などの項目を 新しいシート"メールアドレス抽出" に メアド、住所、名前 ・・ 行として リストに追加。 重複の場合は追加しない。 ※ メアドを探す Range は必要に応じて Cells.SpecialCells・・・ から Range("A:A").SpecialCells・・・ などと変更する。 ※ リストに抜き出す項目の相対位置は 適時 offset( * , * ) で設定する。 Sub メールアドレスと住所を新しいシートに抜き出し() Dim 転写先 As Range Set 今のシート = ActiveSheet For Each シート In Worksheets If シート.Name = "メールアドレス抽出" Then GoTo Forを抜ける Next Sheets.Add before:=Sheets(1) Sheets(1).Name = "メールアドレス抽出" 今のシート.Activate Forを抜ける: Set 転写先 = Sheets("メールアドレス抽出").Cells(65536, 1).End(xlUp).Offset(1, 0) For Each 有効セル In Cells.SpecialCells(xlCellTypeConstants) If 有効セル Like "*@*.*" Then 'メールアドレス識別 "@" If Sheets("メールアドレス抽出").Range("a:a").Find(有効セル) Is Nothing Then '重複が無ければ抽出 転写先 = 有効セル.Value '転写先と 転写するデータ の相対位置を設定 転写先.Offset(0, 1) = 有効セル.Offset(1, 0).Value '住所など 転写先.Offset(0, 2) = 有効セル.Offset(0, 1).Value '名前など Set 転写先 = 転写先.Offset(1, 0)'次の転写先行 End If End If Next End Sub
- KenKen_SP
- ベストアンサー率62% (785/1258)
>「三の倍数行の二列目のセルを抽出(リスト化)」 このケースは、“作業列を使う”方法がEXCELらしくて、一番良いのではないかと思います。例えば、次のような感じです。 1. A列に1列追加して、その列の3行目に1と記入 2. A列1~3行目を選択し、最終行までフィルコピー --->これで、3の倍数行に 1 が入力されました 3. [データ]-[オートフィルタ-]でA列が1の行だけ抽出 その結果の必要な部分だけコピーすれば、ご希望通りのリストができあがります。 この手法の良いところは、単純ゆえにどんな応用も利くことです。
- Wendy02
- ベストアンサー率57% (3570/6232)
セルの領域な位置の具体的な例がないと、正直なところはよく分かりません。 =IF(INT(COUNTA($A$1:$A$20)/3)<ROW(A1),"",INDEX($A$1:$B$20,SMALL(IF(MOD(ROW($A$1:$A$20),3)=0,ROW($B$1:$B$20),""),ROW(A1)),2)) これは、 A列のA1からB列のB20 まであるとした時、3で割り切れる行の2列目(B列)の値を取り出す数式です。 つまり、B3,B6,B9・・・ということになります。 これで違うのでしたら、もう少し、具体的な例が必要です。 ※配列数式ですから、[Shift+Ctrl+Enter]が必要です。分からない場合は、詳しくはヘルプをごらんください。
- sag24-kouji
- ベストアンサー率59% (129/216)
補足をお願いします。 EXLのマクロは書けますか? 名簿はどれくらいの数でしょうか? 今はどのように抽出してますか?