人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセル2007について教えてください。

B列のデーター(データー形式はランダムな日付)を検索対象として、月曜日のデーター行だけを別シートに抽出する方法(関数orマクロ)を教えてください。



●質問者: dongwu
●カテゴリ:コンピュータ インターネット
✍キーワード:エクセル データ マクロ ランダム 抽出
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ana_log
●60ポイント

たとえば項目は下記のように並んでいたとします

No 年月日 項目名 収入 支出 適用
312007/4/1繰越 12,345
422007/4/10税金 5,000

G2に「=WEEKDAY(C2,2)」と入力して全ての行にドラッグして数値を表示します

関数ヘルプを見たらわかると思いますが、1と表示されているものが月曜日になります

これをオートフィルタをかけて1の値だけを抽出し、全ての行をコピー、対象のシートにペースト

というのはどうでしょうか

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-filter....


一度でやりたいのであれば他の方法のほうがいいかもしれません

◎質問者からの返答

ana logさん

ご回答いただきありがとうございました。

助かりました。


2 ● SALINGER
●100ポイント ベストアンサー

3通りどうぞ


? Excelの機能+weekday関数

C列の数式を

=WEEKDAY(B1)

のようにして、C列で並べ替えてB列の2の行の選択してコピー


? 関数だけで

B列のデータがSheet1の場合は、別シートのセルの数式を

=INDEX(Sheet1!$B$1:$B$100,SMALL(IF(WEEKDAY(Sheet1!$B$1:$B$100)=2,ROW(Sheet1!$B$1:$B$100),100),ROW()))

と入れて、Ctrl+Shift+Enterで配列数式にして下にコピー


? マクロでSheet1のB列のデータをSheet2のA列に抽出

Sub Macro()
 Dim i As Long
 Dim lastRow As Long
 Dim r As Long
 
 With Worksheets("Sheet1")
 lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
 
 r = 1
 For i = 1 To lastRow
 If Weekday(.Cells(i, "B").Value) = 2 Then
 Worksheets("Sheet2").Cells(r, "A").Value = .Cells(i, "B").Value
 r = r + 1
 End If
 Next i
 End With
End Sub
◎質問者からの返答

SALINGERさん

詳細なご回答いただきありがとうございました。

凄いですね。自分でも出来るようになりたいのですが難しいです。。。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ