エクセルのマクロについて困っています。2
見てくださり有難うございます。
前回と似た内容の質問ですが、すみません。
前回の内容です。→ http://oshiete.goo.ne.jp/qa/5906335.html
私がマクロで行いたい作業が「場所と日付を検索、さらに要らない列を消し、別シートに表示したい」というものです。
以下の表を作ってみました。
検索したい→A列・B列
削除したい→C列・F列
A B C D E F
1 場 所 日 付 使用機械 作業内容 工数(H) 備 考
2 東京 2010/05/19 R形 掃除 1.00 なし
3 新潟 2010/05/17 L形 塗布 6.00 なし
4 東京 2010/06/01 L 掃除 2.50 なし
5 東京 2010/06/01 L形 掃除 1.00 なし
6 神戸 2010/05/18 R形 塗布 7.00 なし
7 新潟 2010/06/01 L形 塗布 7.50 なし
8 東京 2010/05/11 F形 掃除 2.00 なし
9 神戸 2010/06/01 L形 掃除 1.00 なし
10 神戸 2010/05/15 L形 塗布 5.00 なし
↓
(例)東京の5月分の検索をした場合の結果
A B C D
1 場 所 日付 作業内容 工数(H)
2 東京 2010/05/11 掃除 2.00
3 東京 2010/05/19 掃除 1.00
こうなるようにプログラムをくみたいです。前回の応用も含め、自分なりに組んでみましたがうまくいきません。どこがだめでしょうか?(回答欄にコードを入れますので見てもらえるとうれしいです。
また、こっちのやり方の方がいいんじゃない?というのがありましたら教えていただけますよう宜しくお願い致します。
No.5ベストアンサー
- 回答日時:
初心者用コードということで。
。。'---------------------------------------------
■データシート: Sheet1
見出し行__: 1行目
データ行__: 2行目以降
'---------------------------------------------
■抽出用シート: Sheet2
___A____B____C_____D___
1_場_所__開始日__終了日________
2_●●●__●●●__●●●________
3
4
5_場_所__日_付__作業内容__工_数__
6
7
●●●に抽出条件を入れる
'---------------------------------------------------
Sub test()
Dim R As Long
Dim Row2 As Long '●Sheet2書込み行
Sheets("Sheet2").Range("A5").CurrentRegion.Clear
Sheets("Sheet2").Range("A5:D5").Value = Array("場所", "日付", "作業内容", "工数(H)")
Row2 = 5
For R = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
If Sheets("Sheet1").Cells(R, "A") = Sheets("Sheet2").Range("A2") And _
Sheets("Sheet1").Cells(R, "B") >= Sheets("Sheet2").Range("B2") And _
Sheets("Sheet1").Cells(R, "B") <= Sheets("Sheet2").Range("C2") Then
Row2 = Row2 + 1
Sheets("Sheet2").Cells(Row2, "A").Value = Sheets("Sheet1").Cells(R, "A").Value
Sheets("Sheet2").Cells(Row2, "B").Value = Sheets("Sheet1").Cells(R, "B").Value
Sheets("Sheet2").Cells(Row2, "C").Value = Sheets("Sheet1").Cells(R, "D").Value
Sheets("Sheet2").Cells(Row2, "D").Value = Sheets("Sheet1").Cells(R, "E").Value
End If
Next R
'●結果の並べ替え
If Row2 = 5 Then
MsgBox "該当データなし!"
Else
Sheets("Sheet2").Range("A5:D" & Row2).Sort _
Key1:=Range("B6"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End If
Sheets("Sheet2").Select
End Sub
'----------------------------------------------------
以上です。
No.7
- 回答日時:
「シート全体を選びコピーする」
「新しいシートへ貼り付け」
「C列、F列を削除する」
「1行目見出しをフィルタとする」
「E11にSUBTOTAL関数を定義する」
「A列フィルタオプションで、東京で始まるもの、となるよう条件チェックする」
「B列フィルタオプションで、2010/05で始まるもの、となるようチェックする」
EXCEL2007で実施しました。
コードを記載しなくても期待したものになる感じです。
ポイントは「SUBTOTAL関数」、
フィルタを考慮した合計を求めることができます。
フィルタでは「xxxから始まるものだけにする」、です。
ほか、いろいろ対応できる手段はありそうなので、
これを機にどれか1つでも理解して次回ほかでも使えるようにがんばりましょう。
No.6
- 回答日時:
シンプルに作成してみました。
Sub 新シート作成()
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
For 行 = Cells.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
If Cells(行, "A") <> "東京" Or Format(Cells(行, "B"), "YYYYMM") <> "201005" Then
Cells(行, "A").EntireRow.Delete
End If
Next 行
Range("C:C,F:F").Delete
End Sub
【説明】
・元のシート(Sheet1)をブックの最後に複写します。
・全行をチェックし、東京、2001年05月 以外を削除します。
・C列、F列を削除します。
注)結果のシート名変更はしていませんので、変更するように修正して下さい。
No.4
- 回答日時:
前回のものを少し直せば済むと思います。
AutoFilter をフィルタオプション(AdvancedFilter) に切り替えただけです。
このマクロの基本路線のレベルは、日付のチェックなどの小技は別ですが、思いのほか、初級レベルです。
日付のチェックは、私のこだわりですが、ここのサイトで覚えたワザのひとつです。日付のエラーや誤作動はみっともないですからです。その代わり、場所の検索チェックはやめました。
#3のマクロは、Variant 型の宣言は、文字数制限のために省略しました。
また、エラーは出ていないはずですが、本来は、
With ActiveSheet
.Range("AA2").Formula = "=A2=""" & sPlc & """"
.Range("AB2").Formula = "=AND(" & CLng(sDate) & "<=B2," & CLng(eDate) & ">=B2)"
End With
と書かなくてはなりません。
No.3
- 回答日時:
'//説明は次の書き込みで
Sub SplitMcrR()
Dim sPlc
Dim sMon, sDate, eDate
Dim rng As Range
Dim ret
Dim NextSh As Worksheet
'データ範囲
Set rng = ActiveSheet.Range("A1").CurrentRegion
Set NextSh = Worksheets("Sheet2") '転送先
NextSh.UsedRange.Clear
If Application.CountA(rng) < 3 Then
MsgBox "シートが違うかもしれません。", 48
Exit Sub
End If
sPlc = Application.InputBox("場所は?", "検索", Type:=2)
If VarType(sPlc) = vbBoolean Or Trim(sPlc) = "" Then Exit Sub
sMon = Application.InputBox("月数は? 1-12 または yyyy/m", "検索", Type:=2)
If VarType(sMon) = vbBoolean Or Trim(sMon) = "" Then Exit Sub
If Len(sMon) - Len(Replace(sMon, "/", "", , , 1)) = 1 And Len(sMon) > 5 Then
If IsDate(sMon & "/1") > 1 Then MsgBox "日付式が違います。", 48: Exit Sub
sDate = CDate(sMon & "/1"): eDate = DateSerial(Year(sDate), Month(sDate) + 1, 0)
ElseIf IsDate(sMon) Then
sDate = DateSerial(Year(Date), Month(sMon), 1): eDate = DateSerial(Year(Date), Month(sDate) + 1, 0)
ElseIf IsNumeric(sMon) Then
If Not (CLng(sMon) >= 1 And CLng(sMon) <= 12) Then
MsgBox "月数が違います。", 48: Exit Sub
Else
sDate = DateSerial(Year(Date), sMon, 1): eDate = DateSerial(Year(Date), Month(sDate) + 1, 0)
End If
Else
Exit Sub
End If
Range("AA2").Formula = "=A2=""" & sPlc & """"
Range("AB2").Formula = "=AND(" & CLng(sDate) & "<=B2," & CLng(eDate) & ">=B2)"
Application.ScreenUpdating = False
With rng
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("AA1:AB2"), _
Unique:=False
End With
With ActiveSheet
If Application.Subtotal(3, rng.Columns(1)) = 1 Then
MsgBox "該当データが見当たりません。", 48
.ShowAllData
.Range("AA1:AB2").ClearContents
Exit Sub
End If
.Columns(3).Hidden = True: .Columns(6).Hidden = True
rng.Copy NextSh.Range("A1") '転送
.Columns(3).Hidden = False: .Columns(6).Hidden = False
.ShowAllData
.Range("AA1:AB2").ClearContents
End With
Application.ScreenUpdating = True
NextSh.Activate
End Sub
No.2
- 回答日時:
絞り込む日付は、月だけの指定、日付の開始終了範囲指定、日の指定、考えられますが、月指定ですね?。
結果は並び変わっていますが日付順ででないとダメですか?。フィルタの操作は知っていますか?。情報の追加お願いします。回答有難うございます。
>絞り込む日付は、月だけの指定、日付の開始終了範囲指定、日の指定、考えられますが、月指定ですね?
はい、そうです。
>結果は並び変わっていますが日付順ででないとダメですか?。
できれば、ですが、出来なければ順番は変わらなくても平気です。
>フィルタの操作は知っていますか?。
知っています。ですが、フィルタで日付の開始終了を指定し、検索はできないのでマクロが便利かとおもいました。
言葉不足、情報不足が直っていませんでした。申し訳ありません。
No.1
- 回答日時:
>回答欄にコードを入れますので見てもらえるとうれしいです
質問欄に入れて下さい。何処が上手く行ってないのかソースが無いのに聞くんじゃ
前回の質問と変わらないです。
回答有難うございます。
質問欄の文章が長くなったので違う欄のほうがいいかな?と思い別にしましたが、書き込めませんでした。
今度からはすべて一緒にしますね。
これが載せようと思ったものです。
Sub 検索()
Dim Search1 As String
Dim Search2 As String
Dim S1() As String
Dim S2() As String
Dim SV1 As Variant
Dim SV2 As Variant
Dim HFlg As Boolean
Dim ws1 As Worksheet, ws2 As Worksheet
Dim rng As Range
Dim myStr, ra, rr
Search1 = InputBox("検索日(複数可)を入力" & vbNewLine & "(指定しない場合はキャンセル押下)", "条件入力")
Search2 = InputBox("依頼部署(複数可)を入力" & vbNewLine & "(指定しない場合はキャンセル押下)", "条件入力")
If myStr = "" Then
MsgBox "検索はキャンセルされました。", vbInformation
Cells.Select
Selection.EntireRow.Hidden = False
Range("A1").Select
Exit Sub
Set ws1 = Sheets("日報") '検索 シート
Set ws2 = Sheets("集計表") '貼付先シート
With ws1.Columns("Search1:A") '部分一致で検索(A列)
With ws1.Columns("Search1:B") '部分一致で検索(B列)
End With
Set rng = .Find(What:=myStr, LookAt:=xlPart, After:=.Cells(.Cells.Count))
If rng Is Nothing Then 'なかったら
MsgBox "ありません", vbCritical, myStr & "? ( ̄~ ̄;)う~ん "
Else 'あったら
ra = rng.Address '最初に見つかったセルアドレス
Do
rr = rr + 1 'カウント
rng.EntireRow.Copy Destination:=ws2.Cells(rr, 1) '行のコピペ
Set rng = .FindNext(rng) '連続検索
Loop While rng.Address <> ra '繰り返し
Set rng = Nothing
End If
End With
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- 引越し・部屋探し 山梨県の田舎者の質問です。 仕事の為に東京に引っ越す予定です。 東京都調布市だと土曜日だけ1時間程度 2 2022/04/17 20:42
- SEO 関係ないページを検索エンジンが拾ってしまう 1 2022/05/14 11:16
- 派遣社員・契約社員 これて契約違反になる? 契約書に書かれている作業場と今実際今の入ってる作業場全く違います。仕事内容に 3 2022/09/15 22:12
- DIY・エクステリア 汚れが付きやすい場所の塗料について 1 2022/04/17 21:28
- 掃除・片付け 部屋掃除業者で安めで評判のいい東京、都下あたりの掃除業者さんを探しております。 お心あたりのある方は 4 2022/10/29 17:12
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) 指定した語句と隣のセルを空欄にする 1 2023/06/18 12:54
- 関東 東京でしかできないであろう遊びを教えてください 10 2022/09/10 14:54
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
転勤で札幌に住んで二年ですが...
-
振込用紙の東京MTとは
-
♪カステラ一番,電話は二番♪,...
-
「なんで」と「なにで」の使い分け
-
出身地とは
-
「より」と「から」の使い分け...
-
大阪の人は東京弁(標準語)に...
-
関東の女性はなぜ冷たいのか分...
-
希塩酸は薬局に売っているので...
-
標準語の人ってほんとに語尾に...
-
東京の食べ物はまずい?
-
「坂」の発音
-
東京グールのトーカちゃん嫌い...
-
若者で田舎に住んでるのも負け...
-
「しっちゃかめっちゃか」と「...
-
空港コードでOSAとITM、KIX S...
-
飾っていた御札が落ちてしまい...
-
「○○県は○○市~」にある"は"とは?
-
東京に住む、東京に暮らす、の...
-
四字熟語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
振込用紙の東京MTとは
-
転勤で札幌に住んで二年ですが...
-
「なんで」と「なにで」の使い分け
-
♪カステラ一番,電話は二番♪,...
-
出身地とは
-
最近ここら辺という言葉が標準...
-
「○○県は○○市~」にある"は"とは?
-
地図とかの「至」は何と読む?
-
「より」と「から」の使い分け...
-
特定の文字列があったらその行...
-
東京からフェリーで和歌山にい...
-
「しっちゃかめっちゃか」と「...
-
「そんなこと言わんでよ」の言...
-
とても後悔しています。受験生...
-
紛失したiPhoneが戻ってきまし...
-
行者ニンニクの発送について
-
あなたの嫌いな東京弁は?
-
福島駅から見える山脈の名前は?
-
標準語の人ってほんとに語尾に...
-
東京都の都庁所在地は新宿区?...
おすすめ情報