• ベストアンサー

EXCEL 選択文字を指定枠に記載後元の行削除

先日、EXCEL上でCX, CN, CAを含む品番があった場合、別列(隣の列)一つ上に、品番をコピー する関数式を教えて頂きました。(下記参照) =IF(OR(MID(A2,1,2)="CX",MID(A2,1,2)="CN",MID(A2,1,2)="CA"),A2,"") この式に追加で元のCX, CN, CAを含む行を削除することは出来るでしょうか? 詳しい方がおりましたら、教えて頂けないでしょうか? 宜しくお願いします。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.3

>A列にオーダー、コード、品番等が列挙されており、 >CX,CN,CAを含む品番(例:「CX750881」)のみを >空白になっているB列の一つ上の行にコピーし、 >元のCX,CN,CA品番を含む行全体を削除 A列をB列にもっていきます。 範囲はA1~A列の最終行までの範囲を対象とします。 値のコピーではなく、セルのコピーになります。 Sub 条件移動() Dim sw As Variant Dim word As Variant Dim i As Integer sw = Split("CX,CN,CA", ",") For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 For Each word In sw If Left(Range("A" & i), 2) = word Then Range("A" & i).Copy Range("A" & i).Offset(-1, 1) Rows(i).Delete Exit For End If Next Next i End Sub

yasuhito_s1
質問者

お礼

お世話になります。 上記のマクロ(VBA)で完璧にクリア出来ました。 早速対応して頂き有難うございました。 これを機会ににマクロを勉強してみようと思います。

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

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1693/2560)
回答No.2

関数は値をコピーするのではなく元の値を参照するものですので、元の値を削除すると関数式のあるセルにはエラーが表示されます。 元の値が必要ではなく関数式で参照した結果だけが必要でしたら、関数式のあるセルをコピーして形式を選択して貼り付けの「値」で同じところに張り付けます。その後元の値のあるセル(行)を削除してください。

yasuhito_s1
質問者

お礼

お世話になります。 関数は削除できないことが分かり、とりあえず説明通りリストを作成することが出来ました。 有難うございました。

すると、全ての回答が全文表示されます。
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

関数により行を削除することはできません。 マクロ(VBA)で行ってください。 >別列(隣の列)一つ上に、品番をコピー 隣列の一つ上でしょうか、隣の行(一つ上の行)という意味でしょうか? 一つ上の行に切取コピーするという事で作成します。 (1)Alt+F11で「Microsoft Visual Basic」を開く (2)「挿入→標準モジュール」で標準モジュールを作成 (3)以下のVBAコードを貼付け (4)(1)で開いた「Microsoft Visual Basic」を閉じる (5)入力されているセル(質問内容の場合ですとA2セル)を選択  (A2:C2に入っていればA2:C2を範囲選択した状態にしてください) (6)「表示→マクロ」から「条件移動」のマクロを実行 '■VBAコード Sub 条件移動() Dim sw As Variant Dim word As Variant Dim i As Integer sw = Split("CX,CN,CA", ",") For i = 1 To Selection.Count If Selection(i) <> "" And Selection(1).Row > 1 Then Selection(i).Offset(-1, 0) = "" For Each word In sw If Left(Selection(i), 2) = word Then Selection(i).Cut Selection(i).Offset(-1, 0) Exit For End If Next End If Next i End Sub 関数では値だけ表示されていますので、セルの書式が変わりませんが、 このマクロでしたらセルの書式ごと切取後、貼付されます。 値のみ移動させる場合は上記コードを以下のように変更してください。 Selection(i).Cut Selection(i).Offset(-1, 0)       ↓ Selection(i).Offset(-1, 0) = Selection(i).Text Selection(i).ClearContents

yasuhito_s1
質問者

お礼

お世話になります。 早速回答有難うございます。 VBAコードも大凡見当が付けば分かるような気がしますが、私の説明が悪かったため、部分的に消えはしましたが、上手くいきませんでした。 お手数かけて申し訳ありませんが、再度教えて頂けないでしょうか? A列にオーダー、コード、品番等が列挙されており、CX,CN,CAを含む品番(例:「CX750881」)のみを空白になっているB列の一つ上の行にコピーし、元のCX,CN,CA品番を含む行全体を削除出来れば完璧です。 如何でしょうか? お手数かけて申し訳ありませんが、教えて頂けると助かります。

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

関連するQ&A

  • EXCEL 3文字に合致した品番のみ指定枠に記載

    EXCEL上でCX, CN, CAを含む品番があった場合、別列(隣の列)一つ上に、品番をコピー するように考えています。 いろいろと自分なりに調べて下記関数式を作成してみましたが、CX, CNのみでCAは出来ません でした。 誰か詳しい方がおりましたら、教えて頂けないでしょうか? =IF(OR(MID(A2,1,2)="CX",MID(A2,1,2)="CX"="CN",MID(A2,1,2)="CN"="CA",MID(A2,1,2)="CA"),A2, "") 宜しくお願いします。

  • Excel 参照行の削除でも可変しない関数

    Excel 参照行の削除でも可変しない関数 同じ形式で、数シートにわたり入力された文字をまとめた表を別のシート(シート1)に作成しています。 シート2以降の参照元データーは一定のルールで入力されていますが、削除や追加が頻繁に行われます。削除や追加の度にシート1B列・C列の関数が参照する行数が追随して可変しないようにしたいのですが可能でしょうか。 具体的には、シート2において6行目から9行目を削除した際に、シート1では「B2=みかん」/「C2=イチゴ」と繰り上がり、B行・C行は常に指定した行を参照するようにしたいと思っています。 <シート1>  A B     C 1 タイトル りんご  ばなな (← 3行目) 2 タイトル かき   なし   (← 8行目) 3 タイトル みかん イチゴ (←13行目) ・B列:「=IF(ISERROR('Sheet2'!$B3:$B3),"",'Sheet2'!$B3:$B3)」 ・C列:「=IF(ISERROR('Sheet2'!$D3:$D3),"",'Sheet2'!$D3:$D3)」 <シート2、3…> 参照したいセルは、B列とD列の3行目、8行目、13行目…と一定の間隔で入力されており、全てのシートにおいて同じ箇所に入力されています。 シートごとにカテゴリーの個数は(図A1:E4までを1カテゴリーと考えています)異なり、作業の度にカテゴリーの追加や削除が頻繁にあります。 うまく説明できているか不安ですが、良い方法を教えてください。

  • 行を削除しても関数の参照範囲がずれないようにしたい

    エクセル2010を使っている者です。 関数式の参照範囲のことで伺います。 たとえば、 IF(SUMPRODUCT((A$5:A$1000=I5)*(J$5:J$1000<=K5+1))>1,"○","")) という式を組み、500行以降を削除した場合、行数に絶対参照をつけていても、 参照範囲が5行目から499行目に自動的に修正されてしまいます。 行を削除しても、範囲の参照が修正されないようにする方法はありますか? よろしくお願いいたします。

  • EXCEL 異なった行に振り分ける方法

    自動記録マクロがやっと出来る超初心者です。 よろしくお願いします。 EXCELです。 A1のセルに 1か2か3の数字が入っています。 2行目にA2~CX2まで項目が入っています。 A1が1の時 2行目のA2~CX2列の内容を4行目に移し A1が2の時 2行目のA2~CX2列の内容を5行目に移し A1が3の時 2行目のA2~CX2列の内容を6行目に移します。 どのようにしたら良いのか教えてください。 マクロ超初心者ですので、わかりやすく教えていただける大変助かります。よろしくお願いいたします。

  • エクセルで行を挿入すると式が・・・

    シートを2枚使っています。 シート2にIF関数を使用して、 @IF(Sheet1:A1=”A”,”OK”,””)という式を入力しています。 ここで、シート1の1行目を挿入すると、 式も自動的にA2に変更されてしまいます。 行を挿入しても必ず1行目のA1を参照してほしいのですが、どうすればよいのでしょうか? 新しく入力するときは、行を挿入してシート1のA1に入力します。 絶対セルや範囲名を設定してもうまくいきませんでした・・・。 よろしくお願いします。

  • Excel 指定行までコピーをおこないたい

    Excel2003を使用しています。式のコピーを行いたいです。例えばA列に1,2,3...1000とデータがあります。C列に"=A1"と式をいれてA列の値をC列に表示します。ドラッグして1000行目までもっていって式をコピーできるのはしっています。 これが54392行目まで同じことをしたいとしたら、ドラッグするのは非常に手間です。そこで指定の行まで一気に式をコピーするといったことはできるのでしょうか?

  • Excel ワイルドカードで文字列検索

    A1|"Word" A2|"Excel" A3|"PPT" というシートがあり、A1~A3の列に"or"という文字列がある場合は隣のB1~B3にYes、なければ空欄、という表示をしたいのですが、どういう関数があるでしょうか。 違うかなと思いながら、=IF(A1="*or*","Yes","") としたのですがやっぱりダメでした。フィルタ機能はつかわずに関数でできたらと思っています。よろしくお願いします。

  • sum関数で行ごとの指定ができない。

    Excelの関数式です。 列ごとを指定する時は例えば=sum(a:h)などと指定しますが(A~H列までの列全体を選択) 行ごとの指定をしても、計算式が反応しません =sum(26:43)  (26行目~43行目までの行すべてなど)。 これは何がいけないのでしょうか。 それとも行全体指定の場合、何か特別な操作があるのでしょうか。 よろしくお願い致します。 ※何もsum関数に限った事ではないのかもしれませんが。。。

  • Excelの最終行を取得

    ワークブックモジュールにこんなVBAを追加しました。 '入力行のセルをアクティブにする Private Sub Workbook_Open() Dim 入力行 As Long 入力行 = Worksheets(1).Range("A3"). _ CurrentRegion.Rows.Count + 1 Worksheets(1).Cells(入力行, 2).Select End Sub これは問題なく実行されました。 しかし、以前にこのような関数をA500まで設定していたので空白の行をアクティブにしてしまいました。 =IF(OR($B487<>"",$C487<>"",$D487<>"",$E487<>"",$F487<>""),ROW()-2,"") 関数を消すと実際の最終行を取得することはできたのですが、行番号の関数は追加されませんでした。 テーブルの大きさに合わせて自動で関数を追加するというようなことはできるのでしょうか?また更にいい方法があれば教えてください。

  • 指定した文字列が含まれる行を削除する

    データの照合をしています。 指定した文字列が、「O列」に入っていたら、その行を削除し、 行をつめる というようなマクロを組みたいのですが、エラーがかかってしまいます。 (下のVBは、ネットで公開されていたのを使用させていただいております。) Sub Macro1() Const col As String = "A" '文字列が入力されている列 Dim idx As Long Dim keyWord keyWord = Application.InputBox("削除対象の文字列は?", Type:=2) If TypeName(keyWord) <> "Boolean" And Len(keyWord) > 0 Then   For idx = Cells(65536, col).End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, col).Value, keyWord) > 0 Then '    If Application.CountIf(Rows(idx), "*" & keyWord & "*") > 0 Then       Rows(idx).Delete     End If   Next idx End If End Sub 「下から3行目のNEXTに対応するforがない」とエラーがでます。 ご教授、お願いいたします。

このQ&Aのポイント
  • 定額減税の設定を行ったが、給与明細に反映されない問題に直面しています。
  • フリーウェイ給与(無償版)を使用している状況で、減税額がどうしても表示されない場合の原因を探しています。
  • 初めて使用するツールでの操作に不安があり、解決策やサポートを求めています。
回答を見る

専門家に質問してみよう