こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル表からの取り出し条件

こんにちわ。エクセルで作成した表がありまして、そこから取り出しにご協力をいただけないでしょうか。
B列はナンバーと空白でできています。
B列のナンバーを基準に、M列にあるテキストを取り出したいのですが、
B列空白の行は無視したいのと、B列にナンバーが入力されている場合でも
そのすぐ下が空白の場合は、そのナンバーは取り出さないようしたいのです。

下記の例ですと、取り出す行は16が入力されている行のみにしたいのです。
行数がめちゃくちゃ多いので、助けていただけるとありがたいです。
宜しくお願い致します。

B列    M列
10    りんご
      ばなな
      まぐろ
16    さんま
20    きゃべつ
      みかん

投稿日時 - 2019-07-17 13:45:03

QNo.9636308

すぐに回答ほしいです

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

VBAです。気に食わなければ無視して。
エクセル関数での抜出し課題は、式が複雑、考え方も複雑という小生の持論なので。
VBAでも、一番初歩的なやり方だろうと思う。
ーー
データ例
A列 M列  -は空白セルを便宜的に表したもの。
番号 文字列
10りんご
ーばなな
ーまぐろ
16さんま
20きゃべつ
ーみかん
22なし
23ブドウ
ーキウィ
ーイチジク
25もも
ーーー
10万行以下とする(増やすのは1箇所修正で可。Ò列、P列に結果を出す。
(列指定を変えるのは2箇所修正で可)
標準モジュールに
Sub test01()
lr = Range("M100000").End(xlUp).Row '最終行取得
MsgBox lr
k = 2
For i = 2 To lr '第2行から最終行まで繰り返し
If (Cells(i, "A") <> "" And Cells(i + 1, "A") <> "") Or (Cells(i, "A") <> "" And i = lr) Then
Cells(k, "O") = Cells(i, "A")
Cells(k, "P") = Cells(i, "M")
k = k + 1
End If
Next i
End Sub
ーー
実行結果
O列 P列
16さんま
22なし
25もも

投稿日時 - 2019-07-17 16:36:29

お礼

気に食わないなんてとんでもない。
本当にリスペクトです。
すばらしいスクリプトどうもありがとうございました。
一瞬でカタがついてしまい、今日は残業しなくて済みそうです。
ありがとうございました。

投稿日時 - 2019-07-17 17:50:50

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

》 行数がめちゃくちゃ多いので…
貴方の「めちゃくちゃ」は、取り敢えず、最大何行と覚悟しておけばよろしいのでしょうか?

投稿日時 - 2019-07-17 14:24:29

補足

ありがとうございます。
大体、2万行程度です。

投稿日時 - 2019-07-17 17:29:15

ANo.1

取り出したいナンバーが16の場合は、以下の式でいかがでしょう。
=VLOOKUP(16,B:M,12,FALSE)

投稿日時 - 2019-07-17 14:18:31

お礼

取り出したい番号がわかってないのです。
それだといらないやつを多分弾けないと思います。。
しかしながら、ご回答どうもありがとうございました。

投稿日時 - 2019-07-17 17:37:49

あなたにオススメの質問