エクセルで勤務表を作りたいのですが、
宿直の「宿」と入力したら右隣のセルに「明」
同じように夜勤の「夜」と入力したら「休」と
連動して表示させる方法はありませんか?
また、1→宿 2→早 3→遅のように
セルに数字を入れると同一セル内で文字に変換する方法はありますか?

A 回答 (1件)

IF関数で左のセルに「宿」と入力されたら「明」、「夜」と入力されたら「休」と表示させるようにすればよい。


B1セルに
 =IF(A1="宿","明",IF(A1="夜","休",""))
とすれば、A1セルに入力された文字に応じてB1セルに自動で表示されるようになります。

>また、1→宿 2→早 3→遅のように
>セルに数字を入れると同一セル内で文字に変換する方法はありますか?
セルに入力された値でそのセルの内容を書き換えるには、マクロ機能を使うしかありません。
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございます。
助かりました。

お礼日時:2017/04/20 21:51

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

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

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

Qエクセル 計算式も入っていないのに 別シートの同一セルに連動 入力されてしまう

WIN XP SP2
office2003 です。

エクセル計算式の直接入力
VBA(一切使用せず)
条件付書式

以下の状況は、以上での見落とし等々ではありません。

状況
1ファイル10シート以上に渡るかなり重たいもので
人員名簿を作成しました。
最初のシートを皮切りに、VBAを使わず関数や式のみを駆使し
ソート等々を行い様々な表を作るものです。

既に完成し1年以上も使用しております。
その中で、あるリストを自動生成しており
該当者を抜き出し
 1人目~ 30人目  シートA
31人目~ 60人目  シートB
61人目~ 90人目  シートC
91人目~120人目  シートD
というようにリストの各ページを
1シートずつ分けております。

その中で、数値を入力するだけのセル
例えばシートCのセルJ23に「5000」といれると
A・B・DのシートのJ23にも勝手に「5000」が
入ってしまい、またA・B・C・DのどこかのJ23で
削除すると他の3シートのJ23も全部削除される。
といったことが、時折り発生します。

最初に書いたとおり、計算式等々はそれらのセルに一切
ありません。

なにより!!
とりあえずは完成したエクセルファイルですので
式等々は変更は加えていませんし。
今の今まで、正常に動いていたものが突然そのように
バグり出すのです。
一度、例えばJ23にバグが発生すると、その他のセルにも
同様のことが発生しだします。
シートAのJ24は空白だったのいn
シートBのJ24に何かを入れてしまった瞬間
A・C・Dにもそれが及び、もう数値を削除しても何をしても
それがA・B・C・Dに同じ値を示してしまいづおしようもなく
なるのです。
バグ後 触っていないセルは、他シートが全部同じ値になる
ということは起こりません。
触ったとたんに全部に影響します。

保存して一端終了しても、PC再起動しても直りません。
もし、かろうじてバグ前の状態から保存をしていなければ
キャンセルして、全てをやり直せば戻ります。

あやまって、計算式を削除したどうのといった単純なミスは
絶対にありません。
とにかく突然起こります。
いったいどういう状態なのでしょうか?

非常に困り果てています。
半年に1回くらい発生します。

バグその際に、特殊な数値や文字など決して入力しているわけ
ではありません。
再計算途中に何かいらぬことをしたということもありません。
本当に突然バグります。


ちなみにファイルサイズはバカでかく5M弱です。
再計算に1回10~15秒ほど掛かります。

WIN XP SP2
office2003 です。

エクセル計算式の直接入力
VBA(一切使用せず)
条件付書式

以下の状況は、以上での見落とし等々ではありません。

状況
1ファイル10シート以上に渡るかなり重たいもので
人員名簿を作成しました。
最初のシートを皮切りに、VBAを使わず関数や式のみを駆使し
ソート等々を行い様々な表を作るものです。

既に完成し1年以上も使用しております。
その中で、あるリストを自動生成しており
該当者を抜き出し
 1人目~ 30人目  シートA
31人...続きを読む

Aベストアンサー

シートの複数選択状態と誤認識しているような動きで、どこか壊れてる感じですね。

問題発生するのがそのファイルだけじゃないなら、Officeを再インストール。
当該ファイルだけで発生する問題なら、解決できるか不明ですが以下のことを試してみてはいかがでしょうか。
(意図しない動きをする時に、私が良く試している手順です)

Excelを起動し、当該ファイルを「ファイルを開くダイヤログ」から開きます。
その際に開くボタンの右側にある▼をクリックして、「開いて修復する」を選択。

上記以外にも「シートの移動またはコピー」で、全シートを新しいブックにコピーして(イメージとしてはシートの引越しです)、
そちらを原本とするとかでしょうか。

Qエクセルの「入力規則」→「リスト」の機能を、あるセルに使った時に、そのセルにリスト以外の文字も入力出来るようにするには?

エクセルの「入力規則」→「入力値の値」の
「リスト」の機能は便利な機能だと思いますが、
急遽、リスト以外の文字も入れなければいけない事態が
あった場合に、他の文字が入力できなかったりします。
私がファイルを全て管理す分にはリストの範囲を
広げたり修正したりできるのでいいのですが、
他の(あまりエクセルを使った事がない)人が
使う場合に、他の文字をいれたい場合に、入れれないで
戸惑ってしまうかもしれません。
ドロップダウンで文字を選択する機能も残しつつ、
手入力も出来るように機能を追加する事はできますでしょうか?

Aベストアンサー

実は私も同じことで以前なやんだのですが、実は単純に
リストを設定する際に、「エラーメッセージ」タブをクリック⇒「不正なデータが入力されたらエラーメッセージを表示する」に入ってるチェックをはずす、これで、リストから選ぶまた、リストにない値を入力するということができるようになります。

Qexcel セル未入力→空白 任意の入力値→表示するには

お世話になります。
わかりにくいタイトルの上、過去に質問があるかもしれませんが・・・
○セルA1に別シートよりVLOOKUPでひっぱってきた数値を表示(空白の場合も有り)
○セルB1にセルA1の値、数値表示・もしくは何か入力があれば”入力有”空白ならば空白表示をするのはどうしたらいいのでしょうか?
IF(A1="","","入力有")としましたが、もともとA1にはVLOOKUPの数式が入っていますし、
IF(0<A1,"入力有","")としたら、A1にはマイナス数値表示もありました。
「何らかの入力が有った場合そのまま表示」という指示はあるんでしょうか?(例えば、検索の時に使う[*]のような・・・)
よろしくお願い致します。

Aベストアンサー

No.2&3です。

VLOOKUPの値が#N/Aになるのは、VLOOKUPの第1引数で指定された数値(あるいは文字列)が参照する表に存在しない場合です。

VLOOKUPで参照したセルが空の場合も「0」という数字の場合も、A1に持ってきたときには「0」になってしまいます。これはVLOOKUPに限ったことでなく、他のセルを参照するときにはそうなるのです。たとえばA1に何も入力せず空白としておいて、B1に=A1という式を入れるだけで、B1には0と表示されてしまいます。

したがって、VLOOKUPの結果、参照先のセルが空白の場合は空白を、0という数字が入ってきたときは0を表示させたい(要は参照先と同じように表示させたい)のであれば、A1に表示する時点で細工する必要があると思うのです。そうでないと、B1で=IF(A1=0,…)とやっても、その0は本当に0だったのか空白セルだったのかわからないので、本当に0が入っていた場合に表示されません。

0という数値が元の表に入っていることがあり得ないのであれば、それでもいいと思います。条件付き書式で「"0"なら白」、という設定されているということは、0の場合はあり得ない、ということかもしれませんが、果たして本当に0の値があった場合を想定して設定しているのかどうか、ちょっと疑問です。

それから、「何らかの数値」というのを判定する関数として、
ISNUMBER(A1)
というのがあり、これはA1に数値が入っているときにTRUEになります。
他にも、
ISTEXT(A1)はA1に数値でなく文字列が入っているとき、
ISNONTEXT(A1)はA1に文字列でない値が入っているときにTRUEになります。文字列でない値ということは数値だからISNUMBER(A1)と同じではないか、と思われますが、A1に#N/Aなどのエラーが表示されている場合、ISNUMBER(A1)の場合はFALSEになりますが、ISNONTEXT(A1)の場合はTRUEになります。

また、ISBLANK(A1)はセルが空だったらTRUEになります。
この関数で注意する点は、本当に空のセルだったらTRUEになるのですが、数式の結果""となっているときはFALSEになります。""が入っている場合は、あくまでも「空のセル」でなく「""という文字列が入っている」、と認識されるのです。したがって、上のISTEXT(A1)も、A1が本当に空ならFALSEに、""が入っていたらTRUEになります。

見た目上の空白は、数式も入ってない本当に空のセルか、""という文字列の2種類あるので、関数の値もそれに左右されます。ややこしい世界です。

以上、補足(というより蛇足?)でした。

No.2&3です。

VLOOKUPの値が#N/Aになるのは、VLOOKUPの第1引数で指定された数値(あるいは文字列)が参照する表に存在しない場合です。

VLOOKUPで参照したセルが空の場合も「0」という数字の場合も、A1に持ってきたときには「0」になってしまいます。これはVLOOKUPに限ったことでなく、他のセルを参照するときにはそうなるのです。たとえばA1に何も入力せず空白としておいて、B1に=A1という式を入れるだけで、B1には0と表示されてしまいます。

したがって、VLOOKUPの結果、参照先のセルが空白の場合...続きを読む

QExcelで同一セル内に入力されているデータを他のセルに分割したい

http://okwave.jp/qa4369634.html?ans_count_asc=20

で質問をして、何度かやりとりをさせていただいて

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。
かつ、B・Cセルは増えたセルにそれぞれのデータをコピーしたいと言ったら、

Sub Macro1()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim rng As Range
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("A65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "A"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "A").Value, Chr(10))
      Set rng = Cells(idx, "B")
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wkStr(cnt)
        Cells(idx, "B").Value = rng.Value
        Cells(idx, "C").Value = rng.Offset(0, 1).Value
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 3).Insert shift:=xlDown
        End If
      Next cnt
    End If
  Next idx
End Sub

といったマクロのご回答をいただきました。

これを元に、

・データが入っているセルをA列→B列に変更
・A列のデータはセルが増えた分だけ増やしたい
・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい

と変更したいのですが…。

すいませんが、宜しくお願い致します。

http://okwave.jp/qa4369634.html?ans_count_asc=20

で質問をして、何度かやりとりをさせていただいて

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。
かつ、B・Cセルは増えたセルにそれぞれ...続きを読む

Aベストアンサー

これでどうでしょう。
でも
>・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい
はよく理解できまていません。とりあえず空白セルを挿入するようにしました

Sub Macro3()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim wk
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("B65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "B"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "B").Value, Chr(10))
      wk = Cells(idx, "A").Value
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wk
        Cells(idx, "B").Value = wkStr(cnt)
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 2).Insert shift:=xlDown
        End If
      Next cnt
      Cells(idx + 1, "C").Resize(UBound(wkStr), 2).Insert shift:=xlDown
    End If
  Next idx
End Sub

これでどうでしょう。
でも
>・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい
はよく理解できまていません。とりあえず空白セルを挿入するようにしました

Sub Macro3()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim wk
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("B65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "B"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "B").Va...続きを読む

Qセル内を検索し、結果を隣のセルに入力する

教えてください。

Aセルに数字(1、2、3~8、5、1~3)といったように入力されていて、「~」が入っているものだけに「複数」というテキストをそのセルの横に入力したい場合、どうすれば良いでしょう。

「~」を含む行だけをフィルターにかければ簡単なのですが、できれば関数を使用して一気に最終行までコピーしたいのです。

宜しくお願いします。

Aベストアンサー

=IF(COUNTIF(A1,"*~*")=1,"複数","")
参考HPも紹介します

参考URL:http://www2.odn.ne.jp/excel/waza/function.html#SEC14


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

人気Q&Aランキング

おすすめ情報