こんな関数ありますか?
「入力した日を関数で表示する」

たとえば・・・
A列に入力した日にちをB列に表示できる関数ってありますか?
マクロではなく、関数でしたいんですけど
どなたかご存知ですか?

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

A 回答 (6件)

やっと質問の意味が分かりました。

無意味な回答をしてすいませんでした。

最初に思い浮かぶのは now()ですが、これはどこかの時点で値に変えてしまわないとだめでしょうね。
自動的に値に変えることはできますが、マクロを使わなければかえって面倒になりますね。

関数では思い浮かばないので、以下は私だったらこうするという感想です。質問の主旨に合わなかったら読み飛ばして下さい。

下記の方法なら、ある意味、マクロを実行しているという感じにならないかもしれないので『マクロではなく、関数でしたいんですけど』を承知の上で書かせてもらいます。

(1)ユーザー定義関数を利用する。(B列には =ymd() と入力)

 Public Function YMD()
   YMD = Format(Now(), "yyyy/mm/dd")
 End Function

 または(B列には =ymd2(A1) のように入力。入力がなければ表示しない)
 Public Function YMD2(rg As Range)
   If rg <> "" Then
     YMD2 = Format(Now(), "yyyy/mm/dd")
   Else
     YMD2 = ""
   End If
 End Function

(2)ThisWorkbookに処理を書き込む。(シート側では、A列に入力すれば自動でB列にセットされます)

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   If Sh.Name = "Sheet1" Then 'Sheet1を変更
     If Target.Count = 1 Then 'A列を変更
       If Target.Column = 1 Then '1つのセルを変更
         Application.EnableEvents = False 'イベントの発生を止める
         If Target <> "" Then 'A列で入力した場合
           Target.Offset(0, 1) = Format(Now(), "yyyy/mm/dd")
         Else 'A列で消去した場合
           Target.Offset(0, 1) = ""
         End If
         Application.EnableEvents = True
       End If
     End If
   End If
 End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
結局、関数では出来ないと言うことですね(T-T)
でも、マクロはとっても役に立ちました。
わざわざ作成して頂いてありがとうございます!!

お礼日時:2001/08/31 16:31

んー。

もしかして。

関数ではありません。
また、ご質問の意図と違いましたら、ご容赦ください。

もしかして、データの入力日を知りたい、というのは、他の方が、「古い」データを書き換えてしまう場合があるので、それを防ぎたい、ということではありませんか?

でしたら、
変更箇所の確認というので、そのデータを反映するかしないか選べますので、そちらの方がいいとおもいます。

ツール→変更履歴の記録というのがありますので、
そこで、
変更箇所の表示というのを選びます。

何かデータが変わったら、
ツール→変更箇所の確認を選ぶと、
誰(といっても、そのパソコン上のユーザー名がでるとおもいますが。
たしか、ここの設定は変えられた思いますが、詳細設定は忘れました)が、
いつ、そのデータを変えたかの更新日時を知ることができますよ。

あとは、「反映する」、「反映しない」で、
そのデータを使うか使わないか選べます。

MOUSの上級試験範囲ですので、市販のMOUSExcel上級対策本みると、詳細が載っていると思いますよ。

関数じゃなくて申し訳ないんですが・・・。
    • good
    • 0

すいません。

変な回答をしてしまいました。

 ANo.#4の(1)ユーザー定義関数を利用する。

は再計算すると日付を変えてしまいます。無視して下さい。
(2)は問題ないと思います。失礼しました。
    • good
    • 0

非常に問題はありますが・・・・。


B列に
=IF(A1<>"",NOW(),"")
というよな設定をすればOKです。
※例はA1のセルでB1を表示するものです。
※Bセルの書式は日付フォーマットにする必要があります。

問題というのは、
1.「F9」キー等で更新してしまうと、Bセルの値が変わってしまいます。
2.複数のセルを上記設定すると、1つ替えるとみんな変わってしまいます。

結局、更新によって各関数が動いてしまいますので無理かと思います。

参考までに、現時刻の入力は「Ctrl」+「;」(日付)、「Ctrl」+「:」(時刻)
で簡単にできますので、こちらで入れても楽かと思います。

この回答への補足

う~~ん。
更新日付の列を作成したかったので
「1つ変えてしまうと全部変わってしまう」のは辛いですね。
私も今のところ[Ctrl]+[;]でやっていますが、
どうも面倒くさくて・・・。

やっぱりExcelでは無理なのでしょうか?

補足日時:2001/08/09 16:37
    • good
    • 0

質問の意味が?ですが、A1に入力した日にちをB1に表示するなら、B1には =A1 でしょうか。

B1の書式設定は望む日付形式にします。

A1をセルの書式設定のユーザー設定でスペース(スペース1個)にしておけばA1には見た目何も表示されません。

回答になっている?入力者をごまかしている感じもしますが・・・

この回答への補足

ごめんなさい。説明が下手で(T-T)
もう一度説明し直すと・・・

A列が「今日やったこと」を入力。(この時、文字列で入力してます)
そんでB列に「A列を入力した日付」を関数で表示する。

という感じにしたかったのです。
意味分かって頂けるでしょうか?
お願いします。

補足日時:2001/08/09 15:42
    • good
    • 0

それでしたら、関数は不要です。


表示させたいセルをクリックして、
=を入力後、
もともと日付を入力しているセルをクリックして、Enterキーを押すだけで
OKです。

日付を管理する関数自体は、いろいろあります。
「Fx」ボタンを押して、関数の種類のところで、日付を選べば出てきますよ。
用途に応じて利用してください。

この回答への補足

回答ありがとうございます。
補足を上記にまとめさせて頂きました。

補足日時:2001/08/09 15:48
    • good
    • 0

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

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

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

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

QEXCELにて、同一日付であれば空白にしたい

EXCELにて、同一日付であれば空白にしたい
EXCELにて、同一日付であれば空白にしたいのですが、できればVBAを使用せず実現したい。
ヒントをお願いします

Aベストアンサー

回答No2です。ダブった日付を白文字にするときにページが変わったところで空白になるのは避けたいとのことでしたらページの区切りを求める関数はありませんので、例えば1ページが49行で50行のところが次のページになるなどのことが判っていればA2セルから下方を選択してからの条件付き書式の設定で入力する式は次のようにすることでよいでしょう。

=AND(MOD(ROW(),50)<>0,A2=A1)

QA列とB列の重複を抽出したいのですがA列とB列の値は一部だけ同じ文字です。ご教示お願いします。

エクセル初心者です。重複を見つけるのが仕事です。いろいろやってみたのですがうまくできません。
お知恵をお貸しください。

A列には企業名が入力されています。
B列にも企業名が入力されていますが全く同じ文字ではないのです。

たとえばこういうことです。
A1 (有)雪見酒      B1  雪見
A2 株式会社豪雪地帯   B2 (株)豪雪地帯
A3 ゆきかき本舗     B3 (有)ゆきかき本舗

A列にある企業名とB列にある企業名が同じであればセルを塗りつぶすか○を表示させるように
したいのです。
重複を見つけるのが目的なので、ほかの方法でもかまいません。
すみません、A列のセルとB列のセルが全く同じ名前ならば重複が見つけられたのですが
ここから先がどうしてもわからないのです。。。
申し訳ありませんがどうか教えてください。。。

Aベストアンサー

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim nameT1(maxrow1)
ReDim nameT2(maxrow2)
Range("C1:" & "D" & maxrow2).Value = ""
Call makeTable(nameT1, "A", maxrow1)
Call makeTable(nameT2, "B", maxrow2)
For row1 = 1 To maxrow1
For row2 = 1 To maxrow2
If Cells(row2, "C") = "" Then
If Mymatch(nameT1(row1), nameT2(row2)) = True Then
Cells(row2, "C").Value = "○"
Cells(row2, "D").Value = row1
End If
End If
Next
Next
t2 = Time
MsgBox ("チェック完了 処理時間=" & Minute(t2 - t1) & "分" & Second(t2 - t1) & "秒")
End Sub
'余分な文字を削除した結果をテーブルに格納する
Private Sub makeTable(ByRef nameT() As String, ByVal col As String, ByVal maxrow As Long)
Dim row As Long
Dim ary As Variant
Dim name As String
Dim i As Long
ary = Array("㈱", "(株)", "株式", "(有)", "有限", "会社")
For row = 1 To maxrow
name = Cells(row, col).Value
For i = 0 To UBound(ary)
name = Replace(name, ary(i), "")
Next
nameT(row) = name
Next
End Sub
'企業名が一致かどうか判定する
Private Function Mymatch(ByVal name1 As String, ByVal name2 As String) As Boolean
Mymatch = False
Dim pos As Variant
pos = InStr(1, name1, name2, vbTextCompare)
If pos > 0 Then Mymatch = True
End Function
-----------------------------------------------------
一致の精度が悪ければその旨補足してください。
(一致すべきものが一致しない、一致してはいけないものが一致している)
100%解決できる保証はありませんが、多少のチューニングは行います。

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim ...続きを読む

QWORD差し込み印刷:日付の処理 - EXCELが空欄だと今日の日付が差し込まれてしまう

WORDの差し込み印刷について質問させてください。

EXCELのデータで日付を入れている列があります。この列に空欄がある(つまり日付が入力されていない)と、差し込み先のWORDのほうで、今日の日付が出てしまいます。

EXCELのデータが空欄の場合には、WORDの方に今日の日付を出さない(空欄のままにしておく)方法はありますか?

OSはWinXP, WORDとEXCELは2003を使っています。

よろしくお願いします。

Aベストアンサー

Word2002で確認したところ、質問と同じようになりました。
フィールドコードについては詳しくありませんが、消すことができました。
日付が空欄のところの差し込みフィールドでマウス右クリックしてフィールドコードの表示/非表示をクリックして表示させると
{MERGEFIELD"フィールド名"}となっていると思います。
1方法はココの”フィールド名"を削除すれば日付は表示されません。
もう一つの方法はフィールドを右クリックしてフィールドの編集を選択します。「フィールド」ダイアログボックスが現れます。
フィールドの種類から「差し込み印刷」を選択し、フィールドの名前から「If」を選択して条件式を入力する。
フィールドコードは
「If 式1 演算子 式2 Trueの場合の文字列 Falseの場合の文字列」
ここに
「If 日付のフィールド名<>"" "yyyy/mm/dd" ""」
というのを入力したところ表示されないようになりました。
日付のフィールドがブランクでない場合はyyyy/mm/dd、そうでなければブランクという条件式です
差し込みの1枚目のフィールドで条件式を入れておけば、日付空欄のところはすべて空欄にできると思います。
試しにチャレンジしてみて下さい。

Word2002で確認したところ、質問と同じようになりました。
フィールドコードについては詳しくありませんが、消すことができました。
日付が空欄のところの差し込みフィールドでマウス右クリックしてフィールドコードの表示/非表示をクリックして表示させると
{MERGEFIELD"フィールド名"}となっていると思います。
1方法はココの”フィールド名"を削除すれば日付は表示されません。
もう一つの方法はフィールドを右クリックしてフィールドの編集を選択します。「フィールド」ダイアログボックスが現れます。
...続きを読む

QA列とB列で文字数が少ない方をC列に表示する関数

エクセル2007を使用しています。

A列とB列に下記のように入力されている時、C列に文字数の少ない方を関数で表示させるにはどうしたらよいでしょうか?
なおかつ、A列とB列の文字数が同じ場合はA列の文字を表示させたいです。

A列       B列       C列
リンゴ     オレンジ     リンゴ
あいうえお   ABC       ABC
時計       帽子      時計

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

Aベストアンサー

別解を添付図に
E1: {=INDEX(A1:D1,MATCH(MIN(LEN(A1:D1)),LEN(A1:D1),0))}
  (配列数式)

QExcelで日付を入力したら締日を表示させる

Excelで経費の支払いの表を作ろうとしています。

A列のセルに日付を入力し、
A列に入力した日付が1日~15日までなら
B列のセルにその月の最終日の日付を
16日~31日までなら
B列に翌月の15日と自動で表示されるようにするには
どうすればいいのでしょうか?


詳しい方、教えてください。
ちなみに使用しているExcel2010です。

Aベストアンサー

ごめ。よく読んだら半月ずれてましたな。

=IF(DAY(A1)<15,DATE(YEAR(A1),MONTH(A1)+1,1)-1,DATE(YEAR(A1),MONTH(A1)+1,15))

MONTH(A1)+1で「13月」とか出てきちゃいそうですが、Excelはちゃんと「翌年1月」と計算しなおしてくれますから大丈夫です。

Qエクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるよ

エクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるように作成しています。
条件付書式で土日祭日の場合はC列からF列に色を表示させています。
この色付セル(土日祭日)の場合にはデータ入力が無いので自動で0を表示させ、なおかつデータ入力が出来ないようにしたいのですが、そのようなことは出来るでしょうか。エクセルは2003を使ってます。

Aベストアンサー

C2セルに以下の数式を入力します。

=IF(AND($A2<>"",WEEKDAY($A2,2)>5),0,"")

同様にC2セルに以下の入力規則を設定します。

「データ」「入力規則」で「ユーザー設定」にして数式欄に以下の式を入力します。

=WEEKDAY($A2,2)<6

最後にC2セルを右方向および下方向にオートフィルします。

QEXCELの日付データの比較

EXCELの日付データについての質問です。

たとえば、あるテキストデータでH20.7.19とあったとします。
それとEXCELの日付データにもH20.7.19があったとします。

テキストデータのH20.7.19をEXCEL側に貼り付け、EXCELの日付データH20.7.19と比較させ、答え0(誤差0)を返してもらう方法はありますでしょうか?

宜しくお願いいたします。

Aベストアンサー

こんにちは
DAYS360(開始日,終了日,方式)という関数で日数の差異を
求められます。

A1にテキストデータ H20.7.19
A2にエクセルデータ H20.7.19

があったとします。
=DAYS360(A1,A2)
で差異が0で返ってきます。 0じゃ無かったら別のものですね。

方式はヨーロッパ方式(TRUE)、アメリカNASD方式(FALSE)とか
書いてありましたが、違いはようわかりませんww
付けなくてもいいかとw

適当ですが、ご参考まで^^;

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

Qexcel,word 印刷した日の日付

excel,word文書を印刷したとき、その印刷日の日付を印字させるためにはexcel,word各々
どのようなことをすればよかったでしょうか。

Aベストアンサー

<Excelでの編集方法>
 メニューの「ファイル」-「ページ設定」で
 「ヘッダー/フッター」タブを選択。
 上に表示したい場合は「ヘッダーの編集」ボタン。

 編集画面の上に「日付の挿入」ボタン(カレンダーみたいなボタン)があるので
 それを押せば日付入力できます

<Wordでの編集方法>
 メニューの「表示」-「ヘッダー/フッター」を選択すると
 ヘッダーとフッターが点線で囲まれます。
 お好きなほうを選択し「日付の挿入」ボタンを押せば表示されるようになりますよ。

Q《エクセル2000》A列・B列の商を合計する関数ってありますか?

皆様こんにちは。

SUMPRODUCTは2つの列の積を合計しますが、2つの列の商を合計する関数はあるでしょうか。

Aベストアンサー

普通に SUMPRODUCTでできると思いますが
=SUMPRODUCT(A1:A2/B1:B2)


人気Q&Aランキング

おすすめ情報