• ベストアンサー

EXCEL 頭に特定の文字があった場合、文字記入

B列に複数の品番がありますが、頭に「CY」があった品番のみK列に「図面は不要」と自動で入力するように下記マクロに追加したいのですが、教えて下さる方からの回答をお待ちしています。 ※BからK列のJ列に記載があったものだけを抜粋しています。 sub macro()  range("B:K").autofilter field:=9, criteria1:="="  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  activesheet.autofiltermode = false end sub

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

sub macro()  dim LastRow as long  range("B:K").autofilter field:=1, criteria1:="=CY*"  lastrow = range("B65536").end(xlup).row  if lastrow > 1 then  range("K2:K" & lastrow) = "図面は不要"  end if  activesheet.autofiltermode = false  range("B:K").autofilter field:=9, criteria1:="="  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  activesheet.autofiltermode = false end sub とか。

yasuhito_s1
質問者

お礼

お世話になります。 早速回答頂き有難うございます。 条件がハッキリしていれば、マクロという機能はすごく効率よく出来るものだと、改めて感心しています。 助かりました。”感謝”

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL 特定の列内で記載があった行を削除

    G列に記載があったものだけを残したいと以前質問した際に回答を頂いた内容ですが、 この内容にプラスして、L列に何か記載があった場合、その行は削除するようにしたいと考 えています。 詳しい方が居りましたら、是非頂けないでしょうか? sub macro2()  range("G:L").autofilter field:=1, criteria1:="="  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  activesheet.autofiltermode = false end sub 環境 Excel2003を利用しています。

  • EXCELマクロ AutoFilterの使い方を教えて下さい。

    EXCELマクロ AutoFilterの使い方を教えて下さい。 EXCELマクロ初心者です。使用環境は、EXCEL2007です。 Web上で紹介されていたマクロをアレンジして以下のようなマクロを作成しました。 B列に指定した数字が記載された行を削除するものです。 これをさらに、4,5,6,・・・,11,12,1,2,3の中から指定した数字以外がB列に記載 された行を削除するように書き換えたいのですが、「Criteria1:=intCriteria」 を「Criteria1:<>intCriteria」として実行してみましたがエラーが出てしまいま す。 どなたか、良い方法をご教示ください。不足の情報、私の説明不足がありましたら、 ご指示ください。 以下、MACRO内容 Sub B列に指定の数字がある場合、行を削除() Application.ScreenUpdating = False intCriteria = InputBox("検索する数字を入力。", "数字入力") With Cells(2, 1).CurrentRegion On Error GoTo errhandler .AutoFilter Field:=2, Criteria1:=intCriteria .Offset(1).Resize(.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ActiveSheet.AutoFilterMode = False Exit Sub  errhandler: ActiveSheet.AutoFilterMode = False  MsgBox intCriteria & "はありません。" Application.ScreenUpdating = True End Sub

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • エクセルのマクロで意図しない文字が消える

    エクセルのマクロを組んでいて、なぜか実行すると意図しない文字が消えてしまいます 至急解消したいので、どうぞよろしくお願いします N8から、数値が一列に並んでいて、「0」を消して行くという目的です 下記のような組み方をしています すると、P列1行目からAF列まで入っていた文字が消えてしまいます これを解消する方法を教えて下さい '0を消す Const intCriteria As Integer = 0 With Cells(8, 14).CurrentRegion On Error GoTo errhandler .AutoFilter Field:=14, Criteria1:=intCriteria .Offset(1).Resize(.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ActiveSheet.AutoFilterMode = False Exit Sub errhandler: ActiveSheet.AutoFilterMode = False MsgBox intCriteria & "はありません。"

  • エクセルで型番ごとにワークシートをマクロで作る方法

    昨日に質問させて頂いたものですが、下記のマクロを教えて頂いたのですが 新しく生成された型番のワークシートが抜けていたり、最後まで型番が生成されない状態です。 なにか間違っていたら直して頂ける方お願いします。 Sub macro4()  Dim h As Range  Dim w As Worksheet  Dim i As Long, e As Long  Application.ScreenUpdating = False  Application.CutCopyMode = False ’準備  Set w = ActiveSheet  w.Range("4:4").Insert shift:=xlShiftDown  e = Range("B65536").End(xlUp).Offset(1).Row  Range("B4").Select ’複写  Do   ActiveSheet.Copy after:=ActiveSheet   Selection.EntireRow.Delete shift:=xlShiftUp  Loop Until ActiveCell.Offset(1) = "" ’片付け  For i = ActiveSheet.Index To w.Index + 1 Step -1  With Worksheets(i)  .Range(.Range("B4").Offset(1), .Cells(e, "B")).EntireRow.Delete shift:=xlShiftUp  End With  Next i  w.Rows(4).Delete  Application.ScreenUpdating = True End Sub http://okwave.jp/qa/q7081084.html

  • VBAのAutoFilterのFieldに名前

    VBA(EXCEL)のAutoFilterについて質問します。 Fieldに列番号ではなく、列につけた名前を設定することはできないでしょうか? Sub Macro1() Selection.AutoFilter ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:="山田" End Sub 列番号で設定すると、列が増えた時に、改めてAutoFilterの列番号設定を変更する必要があり煩雑に感じています。 名前設定以外に適切な方法があれば教えて下さい。

  • ダブルクリックでエクセル起動

    セルをダブルクリックしてマクロを起動させたいのですが。 B1セルをダブルクリックすると、 Sub 顧客名検索() ans = InputBox("顧客名を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字 End With End Sub を実行させるようにしたいのです。 その方法で、C1、D1、E1、・・・も同様にしたいと思っています。 どなたか教えてください。

  • EXCELのマクロについて

    お世話になっております。 以下のマクロを1万行分繰り返したいのですが、回数を1万回と指定する構文を 教えてください。よろしくお願いします。 Sub Macro16() ' ' Macro16 Macro ' ' Keyboard Shortcut: Ctrl+Shift+Z ' ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 0).Range("A1:M1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/5/1905" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "7/6/1905" ActiveCell.Offset(1, -2).Range("A1").Select End Sub

  • Excelマクロ オートフィルタ可視領域の特定部分をコピー

    何方か、回答をお願いします。 下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。 やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。? Sub フィルタ() Range("B1:C1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=1e-6" Range("B1").CurrentRegion.Select On Error Resume Next Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select Selection.Copy Range("K15").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter End Sub

  • 型が一致しません

    いつもお世話になっております。 シートごとに元データの値でフィルタをかけ、 フィルタした各シートのD列の文字列を照らし合わせて整合性を確認したく、 下記のようなVBAをつくりましたが、ここで↓ If name_A <> name_B <> name_C <> name_D Then 型が一致しませんとエラーになります。 どなたかアドバイスをお願いいたします。 Sub 不整合チェック()  'フィルター  Worksheets("Aリスト").Select  If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter  Range("B4").AutoFilter  Selection.AutoFilter field:=1, Criteria1:=Worksheets("元データ").Range("C3")  Worksheets("Bリスト").Select  If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter  Range("B4").AutoFilter  Selection.AutoFilter field:=1, Criteria1:=Worksheets("元データ").Range("C3")  Worksheets("Cリスト").Select  If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter  Range("B4").AutoFilter  Selection.AutoFilter field:=1, Criteria1:=Worksheets("元データ").Range("C3")  Worksheets("Dリスト").Select  If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter  Range("B4").AutoFilter  Selection.AutoFilter field:=1, Criteria1:=Worksheets("元データ").Range("C3") '整合性チェック  Dim name_A As String  Dim name_B As String  Dim name_C As String  Dim name_D As String  name_A = Worksheets("Aリスト").Cells(65536, 4).End(xlUp).Value  name_B = Worksheets("Bリスト").Cells(65536, 4).End(xlUp).Value  name_C = Worksheets("Cリスト").Cells(65536, 4).End(xlUp).Value  name_D = Worksheets("Dリスト").Cells(65536, 4).End(xlUp).Value  If name_A <> name_B <> name_C <> name_D Then   MsgBox "データ不整合を発見しました。 処理を中断します。", vbCritical   Exit Sub  ElseIf mykouiji_kouji = name_nyukin = name_kokyaku = name_uriage Then   MsgBox "問題なし。"  End If End Sub

専門家に質問してみよう