- ベストアンサー
エクセルVBAで連続しない数字を抽出できますか?
エクセル2002使用です。 VBAでセルに連番が入力された複数のセルに不連続となったセル番地をとりたいのですが・・・・ A B C D E F 1行目 1 2 3 4 8 12 2行目 4 5 7 8 9 5 左端から必ず右方向へ連続した番号が、入力されますが、途中でその連続性が途絶えます。 1行目の場合はE1セル、2行目はF2セルです。このE1セルやF2セルのセル番地を見つけ出せるようにしたいのですが・・・ 数字は1から始まるとは限りません。 IFステートメントで「不連続ならば・・・」とすればいいと思うのですが、「不連続ならば・・・」の部分で困っています。 よろしくお願いします。
- ken123
- お礼率73% (299/409)
- オフィス系ソフト
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 条件を、「1つ前のセルの値+1と等しくなければ」とすればいいのでは? For i = 2 To 10 If Cells(1, i).Value <> Cells(1, i - 1).Value + 1 Then MsgBox Cells(1, i).Address Exit For End If Next i という感じ ところで、2行目はC2では? (6が飛んでいる)
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7418/18948)
A,B列には適用できませんがC列以降なら C1で「書式」「条件付き書式」で 「数式が」「=AND((B1-A1<>C1-B1),AND(A1<>0,B1<>0,B1/A1<>C1/B1))」 で書式を設定 参考の例だとE1,C2,D2,F2の書式が変わります。 B1-A1<>C1-B1で同じ数値の加算・減算をチェック B1/A1<>C1/B1で同じ数値の乗算・除算をチェック 実際には等比加算等があるのでもっと増やす必要があるのですが とりあえず....
お礼
mshr1962 様早速のお返事ありがとうございます。 なるほど等比例ですか。。。 実は、使用する目的は、賃金台帳で、連続した数字は毎月の給与、不連続は賞与の分で、どうしてもその給与と賞与の間を見つけださねばならないのでした。 #1様と組合わせて使わせていただきます。 ホントにありがとうございました。 今後ともよろしくお願いします。
関連するQ&A
- 行の連続数字を見つけて塗潰す方法
どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に5×5のセルが4つあり、それぞれ1~99迄の数字がランダムに 重複有りで入っています。5×5のセルの中には行の連続数字(例:02 03) が入っています(1個も無い場合もあります)。 行の連続数字を見つけたら、その連続数字のセルを塗潰す方法が知りたいです。 ・2連続・・・黄色で塗潰す。 ・3連続・・・赤色で塗潰す。 ・4連続・・・青色で塗潰す。 ・5連続・・・緑色で塗潰す。 A B C D E F G H I J K 1 01 07 09 11 22 03 10 20 30 31 2 04 12 14 15 23 01 02 07 09 22 3 07 13 17 18 25 04 11 12 14 15 4 06 16 21 24 26 02 13 17 18 23 5 08 19 27 28 29 06 16 24 25 26 6 7 05 09 11 26 30 03 06 13 22 27 8 04 10 15 19 24 03 14 25 28 29 9 01 14 20 25 29 05 11 18 20 21 10 07 18 21 23 31 07 08 16 23 31 11 02 08 12 16 17 02 03 12 17 27 【結果】 上記4つある5×5のセルには、10個の重複数字がありその数字のセルが塗潰されます。 (1)14 15 (2)17 18 (3)27 28 29 (4)30 31 (5)14 15 (6)24 25 26 (7)16 17 (8)28 29 (9)07 08 (10)02 03 【注意事項】 ・使用するエクセルは2010です。 ・セルの中の数字は2桁で表しています。(例:1ではなく01) ・5×5のセルの位置は下記のとおりです。 1個目の5×5マス・・・A1~E5 2個目の5×5マス・・・G1~K5 3個目の5×5マス・・・A7~E11 4個目の5×5マス・・・G7~K11 ・回答はVBでも関数でも構いません。 以上、よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- VBA 人の目には同じ数字に見えるのに、VBAは違う数字として判定してしまう
あるセルに1826.97792という数字が入力されており、 別のセルにも1826.97792と同じ数字が入力されています。 人間の目で見る限りまったく同じ数字です。 また、エクセル関数=if(・・・・・)で判定しても同じ数字という判定がでます。 しかしながら、VBAにて if セル1=セル2 then などとして比較すると、同じでないという判定結果になります。 どうしてこういうことが起きるのでしょうか? また、プログラムを書くうえでの対処方法はどうすればいいのでしょうか? ちなみに、数字は他の人が作ったファイルのもので、 改めて、手で入力しなおすと正しく判定されます。
- ベストアンサー
- オフィス系ソフト
- エクセルで数字が入ったセルの値を抽出
任意1行中のある1列にFALSEと1列だけ数字が入っています(下図参照)。その数字を抽出する関数があれば教えて下さい。 下図の例では、Fの列にB2:E2の範囲の数字「10」を抽出したいのです。マクロを組めば可能なのですが、セルに入力する関数等で簡単に実現できればと思います。 アドバイス宜しくお願いします。
- ベストアンサー
- その他MS Office製品
- EXCELのVBAの数字。
VBAで「Maisuu」に応じて、セルに表示される数字を制御するようにして有ります。 If iMaisuu > 1 Then suuji = Chr(48 + pg) End If というようなかんじにしてあるのですが、10を超えると数字が出なくなってしまいます。 これを回避するにはどうしたらいいのでしょうか? Win・Ex2000です。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA $がついたセル番地から、行、列のみの数字を抜き出す方法は?
こんばんは。 エクセルVBAで、あるセル番地を検索して出すため、以下のようにしました。 Set td = Range("a2:bd35").Find(ymd) この時、答えが $A$3 のように、$がついて出てきます。 次の作業をするために、この行の数字、列の数字をそれぞれ抜き出すにはどうしたら良いのでしょうか? 別の作業によって出した行番号と、上の作業で出した列番号を合わせたセル番地が必要なのです。 どうぞよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 広範囲から数字を抽出する場合
エクセルで注文表を作っています。 B1から右方向に日付が(5/1,5/2,5/3,5/4・・・) A2から下方向には製品名、B2から右と下方向は空白のセルです。 この空白のセルには、製品が出荷された数量を入力します。 (1製品に付き、出荷されるのは月に1回、数字が入るのは1行毎に1つのセルのみです) このカレンダー式のリストを基に、別のシートに出荷日と出荷数量のみを、それぞれ表示したいと思っています。 広い範囲の中で数字の入力されているセルと、その該当日を抽出したい場合、どのようにしたら良いのでしょうか。 関数でできれば一番ありがたいのですが・・ 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAについて
以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例): A B C D E F G 1 1 2 3 4 5 6 7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」 これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。 要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- 検索値と同じ値か、左右の数字と連続数字なら塗潰す。
どなたかご存知でしたら回答をお願いします。 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。 1つ目の5×6マス:A1~F5 2つ目の5×6マス:H1~M5 3つ目の5×6マス:A7~F11 4つ目の5×6マス:H7~M11 使い方としては、 (1)複写数欄と検索値欄それぞれに値を入れます。 (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする (最大:43)。 検索値欄の検索値も1つコピーする。 (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。 具体的には、 (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。 (2)検索値の左右が検索値との連続数字なら、検索値とその左右のセルを赤色で塗潰す。 〇例題 A B C D E F G H I J K L M 1 06 21 23 36 37 43 01 08 16 31 35 41 2 07 12 14 23 26 27 06 10 13 20 31 37 3 09 17 20 29 32 39 02 15 18 30 34 38 4 03 05 13 25 27 40 01 09 25 30 42 43 5 04 11 22 28 35 38 11 16 18 24 29 42 6 7 03 17 27 36 40 41 07 21 22 23 33 37 8 03 04 08 24 26 39 02 03 07 14 18 38 9 10 12 22 32 37 42 05 10 13 28 36 40 10 02 09 25 32 41 42 07 13 22 40 41 42 11 08 14 23 24 30 39 03 29 31 32 33 40 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果 M1、F7:41が黄色で塗潰される。 E10、F10:連続数字(41、42)が赤色で塗潰される。 K10、L10、M10:連続数字(40、41、42)が赤色で塗潰される。 〇注意事項 ・使用するエクセルは2010です。 ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。 ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- Excelマクロ&VBAで一列に3行ごとに数字を入力
Excelのマクロ&VBAで、例えばA1セルからA120セルに数字1から40を3行ごとに「111・222・333・444・・・・・・・・・・・・393939・404040」と入力する。
- ベストアンサー
- その他MS Office製品
- エクセルVBA/抽出・貼付け
下記を行いたいのですが、どのようなコードになるのでしょうか? シート001(入力用) (1)A1~A50、B1~B50、C1~C50、D1~D50 に数値、E1~E50に文字列 (2)F1~F50、G1~G50、H1~H50、I1~I50 に数値、J1~J50に文字列 ※空白行混在 シート002(計算用) シート001に作ったコマンドボタン:クリックにより、 シート002を表示させ、A1~E100に、 シート(1)のA1~E50とF1~J50の空白行以外を連続して 反映させたい。並べ替え用など別シートを用いずに、 VBAコード内で処理したい。
- ベストアンサー
- オフィス系ソフト
お礼
maruru01様早速のお返事ありがとうございます。 アドバイスいただいた方法でやります。 頭が固くなってしまってました。 ありがとうございました。今後ともよろしくお願いします。