あなたの映画力を試せる!POPLETA映画検定(無料) >>

エクセルの文章の途中の日付 ○/○ だけを抽出したいです。
左でも右でもなく文章の途中です。

お分かりの方いらっしゃいますか??

質問者からの補足コメント

  • =MID(C2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},C2&1234567890)),LEN(C2)*10-SUM(LEN(SUBSTITUTE(C2,{0,1,2,3,4,5,6,7,8,9},))))
    で試してみましたが例えば8/13なのに 8/ まではでたり 8/1 までしかでません。

      補足日時:2018/12/06 16:48

A 回答 (3件)

こんばんは。



=MID(C2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},C2&1234567890)),LEN(C2)*10+1-SUM(LEN(SUBSTITUTE(C2,{0,1,2,3,4,5,6,7,8,9},))))

このように、LEN(C2)*10+1 ←と1を足せば、8/31 の場合、8/3 しか出ないのは直るのですが、

8/ までしか出ない場合は、特例で、空白が紛れ込んでいるので、例えば、原文をマウス選択して、「検索/置換」で、検索値に、半角スペースを置き、置換側は何もいれないようにして、実行すれば、半角のスペースを取り去れば、8/ までしか出ない場合も、出るようになります。
    • good
    • 2
この回答へのお礼

試してみました、バッチリできました!
ありがとうございました。

お礼日時:2018/12/07 10:40

こんにちは



ごく簡単なチェックしかしていないので、「20/35」みたいなのも混じりますが…

ユーザ定義関数で
 =pickDate(対象文字)
のような使い方です。(「対象文字」はもちろんセル参照でも可)

以下の、関数定義を標準モジュールへコピペしておきます。
Function pickDate(s As String) As String
 Dim Reg, rMatch
 pickDate = "NoDate"
 Set Reg = CreateObject("VBScript.RegExp")
 Reg.Pattern = "[0-9][012]?/[1-3]?[0-9]"
 Set rMatch = Reg.Execute(s)
 If rMatch.Count > 0 Then pickDate = rMatch(0).Value
End Function
    • good
    • 1
この回答へのお礼

VBAはまだ勉強不足ですが試してみます!
貴重なお時間割いて頂きありがとうございました!!

お礼日時:2018/12/07 10:42

そんな機能はありません。

    • good
    • 0

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

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

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

Q月末の自動計算

月末火曜日の日付をスタートとして稼働日数を求めたいと思っています。

10月なら9/25~10/30まで
11月なら10/30~11/27まで
12月なら11/27~12/25までの日数を計算したいです。

月末水曜日になると当月の日数に自動で計算が切り替わるよう計算することは可能でしょうか。

わかる方がいれば教えていただきたいです。
※土日は日数に含んでOKです。

Aベストアンサー

No1です

>先程試したところ8と表示されるのですが11/28~今日までが8日という計算でしょうか?
はい。下に示しますように『今日』を対象に計算する式として作成してしまいましたので、12/5(=本日)は11/27(=最終火曜日)から数えて8日目という意味になります。
(シートが自動計算の設定になっていれば、明日になると9と表示されるはずです)

私の勝手な勘違いだったかもしれませんが、「今日が月末火曜日から何日目かを計算する」関数式として考えていましたが、対象が「今日」とは限らなかったのでしょうか?
その場合は、式中の「TODAY()」の部分を対象の日(=シリアル値)に置き換えればそのまま同じ計算が可能なはずです。
例えば、対象の日がA1セルに入力されているとするなら、TODAY()を全てA1に置き換えればよいといった感じです。

>ただ、水曜日になったら前日の火曜日分も含めて計算してほしいです。
翌日の水曜日を2日目と計算したいという意味でしょうか?
(No1の説明を読んでいただければわかりますが)現在の式は、水曜日は1(日目)と表示される式になっています。
修正したい場合は、No1の式より常に1日多い値になれば良いだけなので、式の最後に「+1」を加えれば、お求めの結果になると思います。

>とても複雑な回答で解読できなかったので教えていただけると幸いです
式は少々長いですが、全体としての構成は、単純にIFで場合分けした式になっています。
ご参考までに、大雑把な構成を言葉で示すならば・・・
『対象日(今日)がその月の最終火曜日より前なら、前月の最終火曜日からの日数を数え、後ならその月の最終火曜日からの日数を数える』
という式になっています。

No1です

>先程試したところ8と表示されるのですが11/28~今日までが8日という計算でしょうか?
はい。下に示しますように『今日』を対象に計算する式として作成してしまいましたので、12/5(=本日)は11/27(=最終火曜日)から数えて8日目という意味になります。
(シートが自動計算の設定になっていれば、明日になると9と表示されるはずです)

私の勝手な勘違いだったかもしれませんが、「今日が月末火曜日から何日目かを計算する」関数式として考えていましたが、対象が「今日」とは限らなかったのでしょう...続きを読む

QEXCELで日付と時刻が入ったセルを日付だけ取り出したい

(例)

 2005/9/10 13:10:23

が入ったセルが有ります、使いたいのは日付だけ
 なんですが、どうすればできるのか?

 ※結果は別のセルに成っても良いし、元のセルでも可

 宜しくご教授お願いします。

Aベストアンサー

私も単に書式を変えるだけでいいと思いますが、
時間部分のデータを削除したいということであれば、
時間部分は、小数データ部分なので、
=INT(A1)
とかしてやれば時間データをクリアすることができます。
その後書式の設定をしてやって下さい。

Qエクセルで名前入力をしたら最新日付のデータを抽出したい

初めての質問になります。
よろしくお願いします。

タイトル通りの内容で(A1)に名前を入力したら、
その名前(D列3から300行)の最新の日付(E列3から300行)のデータ(U列3から300行)を
(B1)に抽出をしたいです。
尚、使用している日付は2018/12/5 のタイプの日付形式です。
※シート別けしておらず同一シートです。

A1 あああ(入力) B1 100(抽出データ)

D列 E列 データ
あああ 2018/12/5 100
あああ 2018/11/5 98
あああ 2018/10/5 45
いいい 2018/12/4 88
いいい 以下略 以下略
いいい
ううう
ううう
ううう

昔から簡単な作業はやってきたのですが関数?となるとどうも苦手で、
これから勉強していきたいと思ってます。
いろいろ触っていくとエクセルって楽しいですね!
本当は質問ではなく自己解決してみたいところではあるのですが、
苦戦しつつ3時間が経過・・・ちょっと泣けてきましたので質問させて頂きました。
質問もこんな形式で理解してもらえるかわかりませんがよろしくお願いします。

初めての質問になります。
よろしくお願いします。

タイトル通りの内容で(A1)に名前を入力したら、
その名前(D列3から300行)の最新の日付(E列3から300行)のデータ(U列3から300行)を
(B1)に抽出をしたいです。
尚、使用している日付は2018/12/5 のタイプの日付形式です。
※シート別けしておらず同一シートです。

A1 あああ(入力) B1 100(抽出データ)

D列 E列 データ
あああ 2018/12/5 100
あああ 2018/11/5 98
あああ 2018/10/5 45
いいい 2018/12/4 88
...続きを読む

Aベストアンサー

何度も済みません。
[No.2]用の添付図です。

Q月初め 1日から各月の月末の日

D1には 2019/1/1と AAに1と入力してあります。

Y1=DATE(YEAR(D1),MONTH(D1)-1,AA1)
2018/12/1 ←【ここを 2019/1/1と表示をしたいです】

Y2==DATE(YEAR(D1),MONTH(D1),AA1-1)
2018/12/31←【ここを 2019/1/31と表示をしたいです】月の末日です。

【】内のようにしたいのですが
Y1とY2の式を教えて下さい。

Aベストアンサー

こんにちは

なんだか説明がよくわかりませんけれど、勝手に解釈して、
D1セルに日付(シリアル値)があるときに、その月初と月末の日を求めたいってことでしょうか?
 【月初】 =EOMONTH(D1,-1)+1
 【月末】 =EOMONTH(D1,0)
(式を設定したセルの表示書式を日付にしておくこと)

上記以外の途中の日を求めたければ、月初の式に(求めたい日数-1)を加算すれば良いです。

QエクセルのIF関数について教えてください

エクセル2007を使用しているのですが、IF関数について分からない事があるので分かる方アドバイスをお願いします。

A2には「お急ぎ便」「通常便」「日時指定便」のいづれかの文字が入力されています。
A3には「出荷予定日」  2018/12/1 など入力されています。
A4には「=A3+1」と入力して出荷予定日の翌日の日付が入力されるようにしています。 
     例えばA3が2018/12/1の場合には2018/12/2と表示されます。

私がやりたいことですが、A5のセルに下記の情報を入力したいです。

A2のセルに「お急ぎ便」という特定の文字が含まれている場合には、出荷予定日の翌日に到着させなければいけない為、A4の日付をA5セルに表示させるようにしたいです。

反対に「通常便」「日時指定便」の文字が含まれている場合には、A5セルに何も入力せずに「空白」にしたいです。

私も色々と試行錯誤しながら下記の関数がつかえそうだと考えてみましたが、この文字列はお急ぎ便という文字がはいっている場合は○を表示させて、入っていない場合は×と表示させるものですよね。

=IF(COUNTIF(A2,"*お急ぎ便*")=1,"○,"×")

上記の○の部分に、A4のセルで表示されている文字を表示させるようにしたいのですが、可能でしょうか?×の部分は単純に削除して空白にすればいいと思うので問題がないのですが、○の部分に=A3+1とかA4とか色々と入力しましたが、入力した内容がそのまま表示されてしまって、A4の日付をA5のセルに表示させるのはできないようです。

分かる方がいらっしゃったらアドバイス頂ければ助かります。どうぞよろしくお願いします。

エクセル2007を使用しているのですが、IF関数について分からない事があるので分かる方アドバイスをお願いします。

A2には「お急ぎ便」「通常便」「日時指定便」のいづれかの文字が入力されています。
A3には「出荷予定日」  2018/12/1 など入力されています。
A4には「=A3+1」と入力して出荷予定日の翌日の日付が入力されるようにしています。 
     例えばA3が2018/12/1の場合には2018/12/2と表示されます。

私がやりたいことですが、A5のセルに下記の情報を入力したいです。

...続きを読む

Aベストアンサー

>○の部分に=A3+1とかA4とか色々と入力しましたが、入力した内容がそのまま表示されてしまって

まずは、A5のセルの表示形式を日付にしましょう。

それから、A2には
>「お急ぎ便」「通常便」「日時指定便」のいづれかの文字が入力されています。
なので、部分一致にしなくても

A5=IF(A2="お急ぎ便",A4,"")

でよくないですか?それとも他に文字がプラスされることがあるのですか?

Qエクセルで週番号から現在までの経過日数を割り出したい。

例えば セルにある 17.2018から本日までの経過日数を隣りのセルに表示する方法を
教えてください。

Aベストアンサー

No.1・3です。

>曜日は月曜日を基準にしております
というコトなので・・・
一気に数式で!となると相当厄介だと思いますので、
一案です。
↓の画像のようにD・E列を作業用の列としてみてはどうでしょうか?
A2セルに開始週?を小数点込みの数値で入力するとします。

D1セル(セルの表示形式はユーザー定義から yyyy/m/d(aaa) としています)に
=IF(YEAR(DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))<>MOD(A$2*10^4,10^4),"",DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))

これはうるう年を考慮したために少し数式が長くなってしまいました。

E1セルに
=IF(D1="","",WEEKNUM(D1,2))

これでD列シリアル値がその年の何週目か?が表示されます(月曜始まり)

D1・E1セルを範囲指定 → 366行目までフィル&コピーしておきます。

そしてB2セルに
=TODAY()-INDEX(D:D,MATCH(INT(A2),E:E,0))

という数式を入れています。

※ 画像では「本日」から2018年の第17週目月曜を単純に引いています。
月曜日を含むのであれば「+1」としてみてください。

※ 作業列が目障りであれば非表示にしておいてください。m(_ _)m

No.1・3です。

>曜日は月曜日を基準にしております
というコトなので・・・
一気に数式で!となると相当厄介だと思いますので、
一案です。
↓の画像のようにD・E列を作業用の列としてみてはどうでしょうか?
A2セルに開始週?を小数点込みの数値で入力するとします。

D1セル(セルの表示形式はユーザー定義から yyyy/m/d(aaa) としています)に
=IF(YEAR(DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))<>MOD(A$2*10^4,10^4),"",DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))

これはうるう年を考慮したために少し数式が長くな...続きを読む

Qエクセルの質問です 1つのセルに複数の名前を入力していきたいのですが リストボックスを作ってそこから

エクセルの質問です

1つのセルに複数の名前を入力していきたいのですが
リストボックスを作ってそこから任意のセルに入力していくような方法はありませんでしょうか?
マクロ初心者で色々調べて見たのですがよく理解できず試してみたものもうまく動きませんでした…

リストボックスに
A子
ᗷ男
C郎
D美

とあるものとしてそこから
例えばA子とD美の名前を選択したとして
自分が選択した1つのセル内に
A子 D美 のように取得したいのです

今データを入力していくシートの名前「記録」になっていて
名前をシート「コピペ用」のA列に記入していっています

Aベストアンサー

こんな感じで、どうでしょう。

Private Sub CommandButton1_Click()
Dim i As Long
Dim s As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
If s <> "" Then s = s & vbLf
s = s & ListBox1.List(i)
End If
Next
Selection.Cells.Value = s
End Sub

QExcel データ抽出 日付 1900/1/0 1月0日

以前にどなたかが、質問の回答としての関数式をそのまま使っていますが一つだけ問題があります。
詳しい方よろしくお願いします。
Sheet1に年間データがあります。そこからSheet2へE1セルで月を指定して月単位でデータを抽出しているのですが
1月だけ抽出データの最後に、1900/1/0をひろってしまいます。書式を変えても1月0日をひろいます。他の月は空白を返してくれるのですが、1月だけは、書式コピー分すべて1900/1/0を返してきます。文字列や数値は大丈夫です。日付だけです。対処法お願いします。
なんとなくしか理解出来ていない、わたしですいません( ノД`)シクシク…

Sheet1 抽出作業列 F列  
=IF(OR(Sheet2!E$1="",MONTH(A2)<>Sheet2!E$1),"",ROW())

Sheet2 抽出列 A~E列 A列日付
=IF(COUNT(Sheet1!$F:$F)<ROW(E1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$F:$F,ROW(E1))))
よろしくお願いします。

以前にどなたかが、質問の回答としての関数式をそのまま使っていますが一つだけ問題があります。
詳しい方よろしくお願いします。
Sheet1に年間データがあります。そこからSheet2へE1セルで月を指定して月単位でデータを抽出しているのですが
1月だけ抽出データの最後に、1900/1/0をひろってしまいます。書式を変えても1月0日をひろいます。他の月は空白を返してくれるのですが、1月だけは、書式コピー分すべて1900/1/0を返してきます。文字列や数値は大丈夫です。日付だけです。対処法お願いします。
なんと...続きを読む

Aベストアンサー

こんにちは

>1900/1/0をひろってしまいます
実際にそのようなデータがあるのなら、関数の機能としては間違いではないと思いますが、多分、「空白」セルが抽出されていて、結果的にそのような表示になっているのではないかと推測します。

セルの位置関係や内容(意味)がご質問文だけではよくわからないので、半分は想像ですが・・・
>Sheet1 抽出作業列 F列  
>=IF(OR(Sheet2!E$1="",MONTH(A2)<>Sheet2!E$1),"",ROW())
A列に対象とする日付が並んでいて、その範囲内に空白セルが混在しているものと推測します。
(1月を抽出する際に、空白セルの行のF列に抽出用の行番号が表示されているのではないでしょうか?)

対策として、A列が空白の場合はピックアップしないように、式内のORに条件を追加すればよいのではないかと思います。
具体的には
 =IF(OR(Sheet2!E$1="",A2="",MONTH(A2)<>Sheet2!E$1),"",ROW())
といった感じ。

(半分は想像ですので、当たるも八卦です。悪しからず)

こんにちは

>1900/1/0をひろってしまいます
実際にそのようなデータがあるのなら、関数の機能としては間違いではないと思いますが、多分、「空白」セルが抽出されていて、結果的にそのような表示になっているのではないかと推測します。

セルの位置関係や内容(意味)がご質問文だけではよくわからないので、半分は想像ですが・・・
>Sheet1 抽出作業列 F列  
>=IF(OR(Sheet2!E$1="",MONTH(A2)<>Sheet2!E$1),"",ROW())
A列に対象とする日付が並んでいて、その範囲内に空白セルが混在しているものと推測し...続きを読む

Qエクセルでの名前の定義について

エクセルで シート1の患者の単に名前が下にずらっと並んでいて、シート2にそれぞれの患者の情報が
横に列ごとの項目種類でならんでいた場合シート1の患者に名前の定義をし(例 S患者名)、シート2でも患者に名前を定義し(例 B患者名) それぞれお互いにクリックして見れるようにハイパーリンクをしたが、シート2でソートなどをした関係か、シート2からシート1はいいが、シート1からシート2はずれてリンクささってしまうが、どうしてか? ご教授ください。

Aベストアンサー

No.1です。

このやり方は名前の定義は不要です。手順に沿って行うだけでよいです。
A列には普通に名前を羅列します。(例 A2:Aさん、A3:Bさん、・・・)
B列には下記の手順にしたがって数式を入力します。
C列にはリンクしたい先の名前を記載します。(例 C2:Bさん、C3:Cさん、・・・)
こちらで試したときのデータの配置を添付しました。(そちらのデータの配置は把握しておりません)

No.2の回答で、うまくいかなかった理由は、数式のシート名の部分が『sheet』になっているためと思われます。そちらのファイルではシート名は『シート○○』ですよね?

ついでに、もう一点微修正しましたので、以下の手順と差し替えてください。
(数式を変えただけで手順は同じです)
最下部の※も参照ください。

◆手順
1.シート1のB2セルに『=HYPERLINK(CELL("address",INDEX(シート2!A:A,MATCH(C2,シート2!A:A,))),C2)』と入力して、下方向にコピペします。
2.シート1のC列にリンク先患者名(例:S患者名)を記入します。
3.シート2のB2セルに『=HYPERLINK(CELL("address",INDEX('シート1'!A:A,MATCH(C2,'シート1'!A:A,))),C2)』と入力して、下方向にコピペします。
4.シート2のC列にリンク先患者名(例:B患者名)を記入します。


シート名やセル参照はそちらのデータにあわせる必要があります。
リンク(C列)に指定した名前がもう一方のシートの名簿(A列)に存在しない場合、リンクがエラーになります。
あっているはずなのにリンクがエラーになるときは、F2キーを押してからEnterを試してください。

No.1です。

このやり方は名前の定義は不要です。手順に沿って行うだけでよいです。
A列には普通に名前を羅列します。(例 A2:Aさん、A3:Bさん、・・・)
B列には下記の手順にしたがって数式を入力します。
C列にはリンクしたい先の名前を記載します。(例 C2:Bさん、C3:Cさん、・・・)
こちらで試したときのデータの配置を添付しました。(そちらのデータの配置は把握しておりません)

No.2の回答で、うまくいかなかった理由は、数式のシート名の部分が『sheet』になっているためと思われます。そちらのファイ...続きを読む

QExcelで数値が入っているセルにおいてその数値を表示せず、代わりに任意の文字列を表示したいのですが

Excelで数値が入っているセルにおいてその数値を表示せず、代わりに任意の文字列を表示したいのですが何か方法はありますか?

あるセルに元の数値があってそれをベースに別のセルで計算を行っています。但しその元の数値を印刷時に見えなくし、代わりに任意の文字列を表示したいのです。

例えば社内でのみ閲覧可能な定価相当の数値があり、これにある掛け率で売価を計算しているとします。当然この売価は印刷時において見える必要があります。一方元の数値の入ったセル部分には実際には社内定価の数値が入っているのですがこれを表示するのではなく「オープン価格」として表示したいケースです。
いい方法はありますか?

Aベストアンサー

「セルの書式設定」-「ユーザ定義」で、”オープン価格” と定義してみては。


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

人気Q&Aランキング