【最大10000ポイント】当たる!!質問投稿キャンペーン!

別トピックで質問を挙げさせていただいておりますが、それとは別の質問がありましたので挙げさせていただきます。

Excel 2007で数値セルにした場合、通常はセルの値が右揃えになりますが、値がゼロの場合にはハイフン(-)を表示させたうえでそのセルだけ中央揃えする方法はありますでしょうか?

値がゼロの場合にハイフンを表示させるのはIF関数
IF(A1-A2=0,"-",A1-A2)
で行っています。

お分かりになる方いらっしゃいましたらご伝授ください。
何卒よろしくお願い申し上げます。

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

A 回答 (1件)

数式は =A1-A2 または =IF(A1-A2=0,"-",A1-A2)


でセルの書式設定 - |表示形式| - ユーザー定義 で
* 0;* -0;-;@ と [中央揃え] でどうでしょうか?
逆の考えです
「Excel 2007でセルの値で条件判断」の回答画像1
    • good
    • 1
この回答へのお礼

CoalTar様

ご回答ありがとうございます。
教えていただいた方法で無事解決できました。

ありがとうございました。

お礼日時:2009/11/07 23:02

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

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

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

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

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

QExcelのセルでの配置です。

あるセルに文字が入力されてるとします。その内容によって、配置を換えたい場合はどうするのでしょうか?条件付き書式では文字色とかは変えられるようですが、配置(中央表示、右側表示など)は変えられるんでしょうか?出来るんであれば教えて下さい。

Aベストアンサー

残念ながら、条件付き書式では無理そうです(配置に関数する項目がありません)。
どうしても必要であれば、VBAでマクロを組むことになると思います。
下記にサンプルを記しましたので、理解できるようであれば、お試しください。

次のコードをWorksheet_Changeイベントプロシジャにコピーします。
このマクロは、特定の書式設定がされているセルだけを対象に、入力された値が文字であれば左寄せ、数字であれば右寄せ(通常と逆です)に設定します。
特定の書式設定とは、表示形式-ユーザー定義の種類で、”?” となっているセルです。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim t As Range
For Each t In Target
If t.NumberFormatLocal = "?" Then
If IsNumeric(t.Value) Then
t.HorizontalAlignment = xlLeft
Else
t.HorizontalAlignment = xlRight
End If
End If
Next
End Sub

残念ながら、条件付き書式では無理そうです(配置に関数する項目がありません)。
どうしても必要であれば、VBAでマクロを組むことになると思います。
下記にサンプルを記しましたので、理解できるようであれば、お試しください。

次のコードをWorksheet_Changeイベントプロシジャにコピーします。
このマクロは、特定の書式設定がされているセルだけを対象に、入力された値が文字であれば左寄せ、数字であれば右寄せ(通常と逆です)に設定します。
特定の書式設定とは、表示形式-ユーザー定義の種類で、”?” と...続きを読む

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qエクセル TEXT関数を使うと左揃えになってしまう

エクセル2003です。

Text関数を使うと左揃えになってしまうのですが、
標準と同じ右揃えになる方法は有りますでしょうか。

具体的には
A列が”EUR”の時、B列の数字 “#,##0.00”
A列が”JPY”の時、B列の数字”#,##0”
という式をIF関数とTEXT関数を使用して作ったのですが
全て左揃えになってしまうので困っています。
条件つき書式でも右揃えというのはありませんし、、、困っています。

何か解決策があればと思い質問しました。
宜しくお願いします。

Aベストアンサー

おそらくは次のような式をB列で使っているのでしょう。
=IF(A1="EUR",TEXT(式,"#,##0.00"),IF(A1="JPY",TEXT(式,"#,##0"),""))
TEXT関数を使った場合には、その答えはすべて文字列として扱われますので、セルの左側に表示されます。これを右側に表示したい場合には文字列ではなく数値として認識させることが必要です。このためには例えば1を掛けるなどの方法をとります。
=IF(A1="EUR",TEXT(式,"#,##0.00")*1,IF(A1="JPY",TEXT(式,"#,##0")*1,""))

QExcelで中央揃えが出来ない?

 Excelでどのような設定をしたか分かりませんが、AとB列の文字列が中央揃えにしても、左よりのままです。勿論、右揃えにもなりません。

 その列を、同じシートの後ろの列(たとえばH列)にコピーしても状況は同じです。しかし、他のシートにコピーすると中央揃えになりますので、作業には差し支えありません。

 AとB列を元のように、中央揃えにするにはどのようにすればよいでしょうか?
また、どのような設定をしたのでしょうか?
 何方かお知恵をお貸し下さい。m(._.)m

OSとアプリは下記で試してみました。
Windows98、Windows2000
Office2000、OfficeXP

Aベストアンサー

セルを選択して右クリック→セルの書式設定→配置
で、横位置、縦位置を変更してみてください。

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エクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QSUMIFS関数でOR条件を使いたい場合の関数

Excel2010を使用しています。
家計簿を作成しているのですが、SUMIFS関数でOR条件を使用したい場合どのように書けばよいでしょうか。

図は、明細と合計欄です。
ピンクのセルが円、それ以外はドルです。
合計欄のように、円とドルをそれぞれ分けて項目毎の合計額を出したいです。
セルE21のように、円の場合は「MUFJ」「ゆうちょ」ですので、MUFJとゆうちょのSUMIFS関数合計値を足しています。
これを、1行にまとめたいのですが、適切な関数はないでしょうか?
SUMIFSではOR条件が使えないようですので・・・・・・

明細行に円・ドルの列を追加すれば簡単なのですが、明細行の列はこれ以上増やしたくないので、できれば数式のほうで処理できればと思っています。

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

Aベストアンサー

例示のデータなら以下のような数式になります。

=SUM(SUMIFS($C$2:$C$14,$D$2:$D$14,{"MUFJ","ゆうちょ"},$B$2:$B$14,B21))

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルで数式の結果が反映されない(自動計算になっているのに)

すいません、教えてください。

エクセル(XP)で数式が自動計算されなくなって
しまいました。

  ※ツールのオプションはちゃんと自動計算に
   なっているのに全く反映されません。

今まで全く問題なく作業できていたので
原因が分からず困っています。

数式等のエラーだとは考えにくいです。
と言うのも数式のあるセルをダブルクリックして
選択し、そのままEnterキーを押すと計算結果が
反映されます。
ただ、今まで全て自動計算されていたのが
全く動かなくなってしまったんです。

同じようなトラブルを経験された方、又は
詳しい方、どうかよろしくお願いします。

Aベストアンサー

原因は分からずじまいになってしまいましたが
同じことがありました。

「Officeの救急隊」を試してみましょう。
ボタン一発で全ての設定が元に戻ります。
http://www.vector.co.jp/soft/win95/util/se247118.html
(ツールバーなども初期状態に戻ります)

私の場合はコレで直ってしまいました^^

参考URL:http://www.vector.co.jp/soft/win95/util/se247118.html


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

人気Q&Aランキング