プロが教える店舗&オフィスのセキュリティ対策術

たとえば505332以上~505432以内を指定するとして、
A1 505332 A2 505432 と入力。

B2 505332 
B3 505333
B4 505334


B102 505432

とA1とA2セルに範囲の数値を入力すると
自動で間の数字が生成できる方法はありますか。

「連続データの作成」を使ってもよいのですが
他人に触らせるシートですのでメニュー操作は避け、
数値を入れただけで半自動で出力されるのが望ましいです。

できればその範囲内のうち、505366、505421は除くなど
指定して出力できると理想的です。

・・・ここまでくるとエクセルでは難しいでしょうか?

正直、エクセルについてネットで調べたり本で勉強してみましたが奥が深すぎて
なかなか欲しい知識ややり方が見つかりません。
(やろうとしていることがエクセル向きかどうかもわからない状態です。。)

A 回答 (4件)

No3です


添付図忘れたので再回答です。
質問文の数字とは違いますが、答えの式は変わりません。
ア. A1以上A2以内を入力。
イ. 除外する値を A6,A7 に入力。
以上の条件で
ウ. B1 に式 +A1 を入力。
エ. B2 に次式を入力。

  +IF(B1="","",IF(B1+1>$A$2,"",IF(OR(B1=$A$6-1,B1=$A$7-1),B1+2,B1+1)))

オ.B2セルを 必要なだけズル・・・ズルッと オートフィルコピーする。
【追記】
もし除外値がA8 に追加されたら
上式 OR( )の中は OR(B2=$A$6-1,B2=$A$7-1,B2=$A$8-1)と追記してください
「エクセル ある数字の範囲を示してその範囲」の回答画像4
    • good
    • 0

添付例の数値は質問内容とは異なりますが、次のア.イ.は質問と一致しているので


回答の式はそのまま利用出来ます。

ア. A1以上A2以内を入力。
イ. 除外する値を A6,A7 に入力。
ウ. B1 に式 +A1 を入力。
エ. B2 に次式を入力。

  +IF(B1="","",IF(B1+1>$A$2,"",IF(OR(B1=$A$6-1,B1=$A$7-1),B1+2,B1+1)))

オ.B2セルを 必要なだけ オートフィルコピーする。
【追記】
もし除外値がA8 に追加されたら
上式 OR( )の中は OR(B2=$A$6-1,B2=$A$7-1,B2=$A$8-1)と追記してください。
    • good
    • 0

A3: =A2-A1


B1: =IF(ROW()>A$3+1,"",A$1+ROW()-1)
「エクセル ある数字の範囲を示してその範囲」の回答画像2
    • good
    • 0

こんばんは!



B2セルは単純に
=A1
としB3セルに
=IFERROR(IF(B2+1<=A$2,B2+1,""),"")
という数式を入れフィルハンドルでずぃ~~~!っと下へコピーしてみてください。

>できればその範囲内のうち、505366、505421は除くなど
指定して出力できると理想的です。
除外するデータをどこかのセルに表示させておけば可能だと思います。
ただ関数できるかもしれませんが、結構厄介な感じがします。
VBAであれば簡単にできます。

仮にD列に除外するデータを羅列しておくとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1・A2セルに開始・最終数値を!
D列に除外したい数値を入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim i As Long, lastRow As Long, cnt As Long, c As Range
If Intersect(Target, Range("A1:A2,D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
If WorksheetFunction.Count(Range("A1:A2")) = 2 Then
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "B"), Cells(lastRow, "B")).ClearContents
End If
cnt = 1
For i = Range("A1") To Range("A2")
Set c = Range("D:D").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
cnt = cnt + 1
Cells(cnt, "B") = i
End If
Next i
End If
Application.ScreenUpdating = True
End Sub 'この行まで//

※ 細かい検証はしていませんので
エラーが出たらごめんなさい。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!