• ベストアンサー

空白でないセルの値だけを取得する

tom04の回答

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 関数でもできそうな感じですが、VBAをご希望のようなので・・・ 一例です。 ↓の画像のようにSheet1にデータがあり、Sheet2のA1セルに検索項目を入力するとします。 ↓のコードを標準モジュールにコピー&ペーストしてマクロを実行してみてください。 Sub test() Dim i, j, k, L As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") j = ws1.Cells(1, Columns.Count).End(xlToLeft).Column L = ws2.Cells(Rows.Count, 1).End(xlUp).Row If L > 2 Then ws2.Range(Cells(3, 1), Cells(L, 1)).Clear End If For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(ws1.Rows(1), ws2.Cells(1, 1)) = 0 Then If MsgBox("データがありません。操作を中止しますか?", vbYesNo) = vbYes Then Exit Sub ElseIf WorksheetFunction.CountIf(ws1.Rows(1), ws2.Cells(1, 1)) Then k = WorksheetFunction.Match(ws2.Cells(1, 1), ws1.Rows(1), False) If ws1.Cells(i, k) = "○" Then ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws1.Cells(i, 1) End If End If Next i End Sub こんな感じではどうでしょうか?m(__)m

anchan3411
質問者

お礼

まさに、求めていたものズバリです ありがとうございました

関連するQ&A

  • 任意のセルをクリックするとそのセルの値を取得することは可能ですか?

    エクセルでこのようなことは可能か教えてください。 エクセルのシート1のB1からE3までにセットメニュー表があります。 イメージはこのような感じです。  A   B      C     D      E     1  りんご1個   150円  りんご1個   100円    みかん1個 2  りんご2個   250円  みかん1個   50円    みかん1個 3  りんご1個   200円   りんご2個   200円    みかん2個 表自体はもっと広範囲であるのですが、省略させていただきます。 ここで、この表の、たとえばB1セルをクリックした際に B1セルのりんご1個みかん1個 とC1セルの150円 という値を シート2の任意のセル(たとえばA1とB1セルに)に反映させることは可能ですか? 説明がわかりづらいかもしれませんがよろしくお願いします。

  • エクセル 複数列からの抽出

    表題の質問をさせていただきます。 以下の表があります。 りんご --- --- --- --- りんご --- --- みかん --- バナナ --- --- --- --- バナナ バナナ --- みかん --- りんご・みかん等はVLOOKUPで表示されており、「---」部も、ここでの質問上 便宜的に「---」としていますが 実際にはVLOOKUP関数が入っていてエクセル上では 見た目は空白になっています。 さて、質問なのですが、上記表から文字が入っている部分のみを抜き出して以下のようにしたいのです。 抜き出し先は同一シート内でも別シートでもかまいません。 りんご りんご バナナ バナナ みかん     みかん バナナ 実際の表は30列・80行前後でして、現在は各列毎にオートフィルタの空白以外のセルで選択してコピペを列数分だけ繰り返しています。 関数やVBAで効率よく選択することが出来ますでしょうか。 エクセル2003です。よろしくお願いいたします。

  • excelで1つのセルに複数の値を返す方法はありますか?

    おせわになっております。 excelで質問です。 excel関数でもVBAでもいいのですが、1つのセルに複数の値を返す方法はありますでしょうか?? たとえばVLOOKUP関数だと1つのセルに1つしか返せませんよね?? a=りんご b=バナナ c=すいか d=いちご e=キウイ と設定したしたとして、 a,c,dと入力すると→りんご,すいか,いちご とすべて1つのセルに出るようにしたいのです。りんご,すいか,いちごという値にしたいので、それぞれを別々のセルに入れることはしたくありません。可能でしょうか?? よろしくお願いいたします。

  • エクセル関数で最後に入力したセル(値)を取得したい

    いつもお世話になります。エクセル2000を使用しています。 A列にデータを入力しています。B1のセルにA列の最終入力値を表示させたいのですが、B1に何か関数を入れることでできますでしょうか? 例1 A りんご みかん なし 例2 A りんご みかん なし バナナ 上記の例1では「なし」、例2では「バナナ」をB2に表示させたいのです。 よろしくお願いします。

  • Excel2003 並び替えに関する質問 VBA初心者

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方をVBAで組みたいのですが、まずはどうすればよいのかわかりません。 もし、これを見て答えられるようであれば、どなたか教えていただければ幸いです。 どうか宜しくお願いします。

  • Excelで別シートのセルを選択したら、その隣のセルを表示させたいので

    Excelで別シートのセルを選択したら、その隣のセルを表示させたいのですが、 やり方がわかりません。 このようなリストを作成しました。 ----------------  果物  値段 りんご  50 バナナ  100 パイン  120 ---------------- 別シートのA1(他のセル)に「りんご」と入力したら A2に「50」とを表示させる方法を教えてください。 ちなみに別シートのA1には「果物」で入力規則してあります。 プルダウンで「りんご」を選択したら、 自動的に連動させてA2に「50」といれたいのです。 IFなど検索しましたが、該当するのはみつけられませんでした。 よろしくお願いします。

  • 連続した値の、間の値を削除したい。

    すみません、誰か教えていただけませんか。 A列に値が入力されていて、連続の値が3つ以上値が連続 していたら間の値を削除したいのですが、どのようにしたら 良いのでしょうか。 すみませんが、教えていただけませんでしょうか。 下記の様に記述しましたが、うまくいきません。 リンゴ 1 リンゴ 2 リンゴ 3 リンゴ 4 ばなな 5 ばなな 6 ばなな 7 みかん 8 みかん 9 みかん 10 みかん 11 パイナップル 12 パイナップル 13 イチゴ 14 イチゴ 15 イチゴ 16 リンゴ 1 リンゴ 4 ばなな 5 ばなな 7 みかん 8 みかん 11 パイナップル 12 パイナップル 13 イチゴ 14 イチゴ 16 Sub 値削除テスト() Dim Te As Long Dim Re As Long Te = Cells(Rows.Count, 1).End(xlUp).Row For Re = 1 To Te If Cells(Re, 1).Value = Cells(Re, 1).Offset(1, 0).Value And Cells(Re, 1).Value = Cells(Re, 1).Offset(2, 0).Value Then Cells(Re, 1).Offset(1, 0).Delete (xlUp) End If Next Re End Sub 宜しくお願いします。

  • Excelで同一文字列を検出して隣りのセルに返すなどしたい

    Excelのシートの1列に文字列がずらっと並んでいるとします。本来は「いちご、りんご、ばなな、みかん、すいか、めろん」と、ダブリがないはずの項目ばかりが入力されているはずでしたが、しかし実際は「いちご、りんご、ばなな、りんご、みかん、いちご、すいか、めろん」という風に、いくつかの項目にダブリがあるとします。そこで、そのダブリを発見し、何がダブっているのか手早く知る方法があれば教えてください。関数、もしくはマクロをご存知の方、お願いいたします。

  • エクセルで一つのセルに別Bookのデータを貼り付け

    エクセルで別Bookにある複数の参照データを一つのセルに 貼り付けたいのですが、 例えばBook1には以下のようなデータがあります。    A列       B列 1 バナナ     カテゴリ1 2 もも       カテゴリ1 3 りんご      カテゴリ1 4 メロン      カテゴリ1 5 バナナ     カテゴリ2 6 みかん     カテゴリ2 7 もも       カテゴリ3 8 バナナ     カテゴリ3 9 いちご     カテゴリ3 10 もも      カテゴリ4 Book2にはB列にカテゴリ1・カテゴリ2・カテゴリ3というように、 項目が入力されています。 Book1を参照して、B列のカテゴリ1に当てはまるA列の値(例ではバナナ、もも、りんご、メロン)を Book2のカテゴリ1の横(A1)の一つのセル内に貼り付けたいのですが 可能でしょうか?    A列      B列 1 バナナ   もも       カテゴリ1   りんご   メロン 2 バナナ     カテゴリ2   みかん  3 もも       カテゴリ3   バナナ   いちご             つまり、Book2を上記のような形にできればと思います。 拡張子は .xlsxです。 A列の項目とB列のカテゴリ数は数1000ほどあり、 各カテゴリの数は1つのものもあれば、10数個あったりと不揃いです。 カテゴリに見合わせてコピペしていくのは大変なので 良い方法があれば、ご教授宜しくお願い致します。    

  • ExcelデータをAccessに取得させる方法

           エクセル           Access    A列   B列  C列      フェールド名  人 りんご みかん ばなな キャベツ    リンゴ  3   木村               木村  3    2    みかん  2   木村             小林             4    ばなな  4  小林               青木                   2    キャベツ 2  青木 のようにエクセルのデータでA列をAccessのフィールド名にし、もし無ければ、その項目名(りんご等)をフィールド名に追加させ、上の右図のようにAccessにデータを取得させるコードを作りたいと考えてます。  取得させる場合はExcellではなく、Access VBAで取得させたいです。  どんなコードを書いたらよろしいのですか?  分かる方がおられましたら、よろしくご指導くだされとうれしいです。  私のVBAのレベルですが、Access VBAは今回初めてで、Excel VBAは中級くらいかと思います。  よろしくお願いします。