ネットが遅くてイライラしてない!?

エクセルの2000を使用しています。
今商品の番号管理を使用としているのですが。
番号の最初の数値をA1に、最後の数値をB1に入れ、C1に=B1-A1+1と計算式を入れ個数を求めているのですが、A1とB1が同じ場合B1の入力を省略できないかと考えました。
例とすると、最初の番号が3で最後が5の場合は、A1=3、B1=5でC1は3と表示されます。
しかし、最初の番号が3で最後も3の場合は、A1=3、B1=入力しないでもB1は3となり、C1は1と表示されるようにしたいのです。
つまり、B1に入力した場合は入力した値、何も入力しない場合はA1と同じ値にするです。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは。

maruru01です。

C1は、

「=IF(A1="","",IF(B1="",1,B1-A1+1))」

で出来ます。
A1入力、B1未入力の場合は、1になります。

B1は出来ないと思います。
B1にA1の値を入れるには、B1に予め数式を入力しておかなければなりません。
しかし、B1に手入力すると、その数式が上書きされてしまいます。
数式も「セルに入力された文字」なのです。

したがって、これを実現するためには、VBAを使用する必要があります。
    • good
    • 0

ポイントがずれていたら申し訳ありませんが、あらかじめB1に「=A1」と入力してオートフィルで下の行にも数式を貼り付けておいてはだめでしょうか?



最初と最後の番号が違うのでしたら、B1に改めて入力し直すでしょうから問題ないと思うのですが…。
C1のセルには「=if(A1="","",B1-A1+1)」と数式を入れておけばいいかと思います。
A1に入力されていない状態でもB1に「0」と表示されるようであれば、メニューバーのツール-オプション-表示タブを開き「ゼロ値」のチェックを外しておけばよろしいかと思います。
    • good
    • 0

> 何も入力しない場合はA1と同じ値


いや、結果が必ず1なのでわざわざそんなことをしなくても、たとえばC1を
=if(isblank(B1), 1, B1-A1+1)
とすると、「B1が空っぽだったら1で、そうじゃなかったら…」というふうになります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelで書式やページ設定の既定値を設定をしたい。

テンプレートで作っておくのではなく、いつも自分が使う書式やページ設定を登録しておいて(既定値を設定する)、Excelを起動する度に自分が登録した既定値になっているものをすぐ使いたいのですが、何か方法はありますか?

Wordでは、書式の既定値の設定がありますが、Excelで同様の設定はありませんか?

以前、
「ファイル」「名前を付けて保存」で「ファイルの種類」を「テンプレート(*.XLT)」として「ファイル名」に「BOOK.XLT」として保存。これで Excel を起動する度に保存した設定になる。
という方法を教えていただいたのですが、できませんでした。他の方法でご存知の方がいらっしゃいましたら、よろしくお願いします。

Aベストアンサー

こんにちは。

>「ファイル」「名前を付けて保存」で「ファイルの種類」を「テンプレート(*.XLT)」として「ファイル名」に「BOOK.XLT」として保存。これで Excel を起動する度に保存した設定になる。

これだけでは出来ません。その出来たテンプレートを、XLStart フォルダに入れてあげなくてはなりません。

場所的には、
<ドライブ>:\Documents and Settings\<ログイン ユーザ名>\Application Data\Microsoft\Excel\Xlstart\

こちらがよろしいのではないかと思います。(もうひとつ、グローバルフォルダがありますが、あまりお勧めしません。)また、Book.xlt のテンプレートは、まっさらなシートに設定したものにしてください。

QExcel97でセルに初期値を入れとくには?

windows98でExcel97を使っています。
ひとつのセルに" 平成  年 月"と表示しておいて,そのセルに日付を"2002/10"と入力したら、和暦の"平成14年10月"というように表示したいのですが、一つのセルで出来ますでしょうか?
マクロ、VBAは使用したくありません。お知恵を貸してください。

Aベストアンサー

ご要望のことはできない相談だと思います。「セルをクリヤしても" 平成  年 月"と表示しておきたい」は、矛盾したご要望ではないでしょうか?

何故、「クリヤしても" 平成  年 月"と表示しておきたい」のでしょうか? 入力者に対する注意であれば、表の上部に”平成 年 月”と書いておけば良いし、そもそもk_ebaさん、y2000さん の方法であれば、和暦はもちろん、西暦で入力しても和暦で表示される訳ですから、それでもご不満と言われれる趣旨がいま一つよく分かりません・・・。せひ、その点の補足をお願いします。

Qエクセルの「セルの書式設定」の初期設定を変えたいのですが・・・

エクセルで、「セルの書式設定」は、表示形式=標準、配置=標準・下詰め、フォント=MSPゴシックと出てきますが、普段良く使うのは、表示形式も配置もフォントも毎回変更しなくてはなりません。普段良く使うものに、あらかじめ設定変更したいのですが、どのようにしたら良いのでしょうか?

Aベストアンサー

「書式設定」「スタイル」で「標準」の「変更」で
よく使う形式を設定後に
「ファイル」「名前をつけて保存」でファイルの種類を「テンプレート」としてSheet.xltとして保存
保存場所は下記URLを参照

詳細は下記をご覧ください。
http://office.microsoft.com/ja-jp/assistance/HP052292861041.aspx
http://office.microsoft.com/ja-jp/assistance/HP052022071041.aspx

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QエクセルのIF文で「NOT=」はどう書くのですか?また、>=や<=の場合の書き方を教えてください

タイトルのとおりです

IF文で下記の3つの書き方がわかりません。

NOT=は、<>?
0以外の場合は、A1<>0?

A1が0と同じか、大きい場合は
A1>=0?

なんだか、うまくいきません^^;

よろしくお願いいたします

Aベストアンサー

A1が・・・・・
A1 <> 0  0以外
A1 >= 0  0以上(0を含む)
A1 > 0   0より大きい(0は含まない)
A1 <= 0  0以下(0を含む)
A1 < 0  0未満
A1 = 0  0

=<,=> などの書き方は使えません。

Qエクセルで空白セル”” と未入力セルの違い

関数で セルA1 に=if(B1=0,"","入力済")
としました。
セルの選択を素早くするためにショートカットキー「Ctrl+↓」を
利用しています。
通常の未入力空白セルは上記のショートカットで飛ばされて選択
されません。
これに対して上記関数で ""  として入力されたものを
コピーして値だけを貼り付けたとしても
上記ショートカットキーで飛ばされず選択されてしまいます。
見た目は 全く同じ 空白セルです。(関数も値貼り付けをしているので消えています。)
未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。
また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。もちろんDeleteKeyを使って未入力の空白セルに
戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。
おわかりの方お教えください。

Aベストアンサー

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。

つまり「セルを1つづつ選択してDeleteキーで1つづつ空白セルに戻すのが面倒」なので「全部を一気に空白セルに戻す良い方法は無いか?」と言う事ですね?

だったら簡単です。

すべての式を
=if(B1=0,"","入力済")
ではなく
=if(B1=0,1/0,"入力済")
にしておきましょう。

すると、未入力の所は、空白("")にならず「#DIV/0!」になります。

そう表示されたら、シート全体を選択し「CTRL+G」を押して「ジャンプ」を出します。

「ジャンプ」のダイアログが出たら「セル選択」を押し、セル選択のダイアログを出します。

セル選択のダイアログが出たら「数式」を選び、その下のチェックは「エラー値」だけにします。

「OK」を押してダイアログを閉じると「#DIV/0!」の表示になったセルのみが選択状態になります。

「#DIV/0!」の表示になったセルのみが選択状態になったら、Deleteキーを押して、それらのセルを一気に「空白セル」にして下さい。

もちろん、大量にあっても、手順は変わりません。

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショ...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング