• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字の表示を変える関数、日付入力の関数)

エクセルVBAで文字の表示変更と日付入力機能の実装方法

このQ&Aのポイント
  • エクセルVBAを使用して、B列に番号を入力し、C列とD列にデータを表示させる際に、A列に自動で日付を入力する方法を教えてください。
  • D列のデータに応じて、データ先ブックのD列に特定の文字を表示させたいです。例えば、D列が100の場合は「あいうえお」、200の場合は「かきくけこ」と表示させたいです。
  • B列とC列には、VLOOKUP関数が使用されています。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

> 【やりたい事1】 エクセルにはNOW関数やTODAY関数と言った、 (システム上の)今日の日付を表示する関数はありますが、 これらはこの関数を入力する都度及びブックを開きなおす都度、再計算されてしまいます。 【やりたい事】を実現しようとすると、私がスッと思いつく手段は二つ。 該当セルが更新された時点でのシステム日付を入力するマクロを組むと言うのが一つ。 もう一つは消極的ですが、質問の図のセル番地で考えると   A2:=IF(B2="","",NOW()) としておいて、B2セルに入力されたらA2セルをコピー・値を貼り付け(手動)。 この「運用で」実現できます。 > 【やりたい事2】 100⇒「あいうえお」、200⇒「かきくけこ」・・・ これのいわゆる「対応表」を別枠に持つことで可能です。 簡単に言うと、VLOOKUPを重ねれば良い、と言うことです。 失礼ながらスクリーンショットを用意するのが面倒だったので、同じシートにまとめてしまいましたが 「状態対応表」と言う表領域を追加して、VLOOKUPを重ねます。   D3セル:=VLOOKUP(VLOOKUP(B3,$A$9:$C$11,3,FALSE),$A$15:$B$17,2,FALSE) 要するに、 ・データ先の「番号」を元にして、VLOOKUPでデータ元から「状態」を参照 ・参照されてきた「状態」を使って、対応表から「状態」を抽出 と言う考え方ですね。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

日付入力の関数ということですね。 B2セルにデータを入力したときにA2セルに今日の日付を表示させるのでしたらA2セルには次の式を入力します。 =IF(B2="","",TEXT(TODAY(),"yyyy/m/d")) ただし、このままの状態では明日になったらA2セルの表示は明日の日付に変わってしまいます。 そこで回答No1さんのようにマクロを使って今日に日付を入力するようにするのがよいでしょう。 しかしマクロは良くわからないとのことでしたら本日表示された日付についてはその範囲を選択してから「コピー」し、そのままの状態で「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。この操作によって選択されたセルの範囲では日付を表示させるための式が無くなりますので明日になっても日付が変わることはありません。 やりたいこと2についてはD2セルに次の式を入力して下方にドラッグコピーするだけで良いように思いますね。 =IF(C2="","",IF(C2=100,"あいうえお",IF(C2=200,"かきくけこ","")))

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

【やりたい事1】はマクロでないと対応不可 http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_event.html#change ↑ こんな感じで 【やりたい事2】条件によって計算式が大きく変わります 指定された条件: 100の場合は⇒あいうえお 200の場合は⇒かきくけこ のみであれば D列 =CHOOSE(VLOOKUP($B2,[データ元.xls]Sheet1!$A$2:$C$4,3,FALSE)/100,"あいうえお","かきくけこ") ↑これで対応出来ますが、おそらくやりたいことはもっと別のことなんだろうと思う

関連するQ&A