• ベストアンサー

範囲から条件に適合した情報を編集し別セルに出力する。

以下のような数値が入力されている値があったとします。 -------A---------B---------C 列1 -- 5:05 ------- 5 -------- 5 列2 -- 5:30 ------- 5 -------- 30 列3 -- 10:04 ----- 10 -------- 4 A列はhh:mm B列がhh C列がmm となります。 時間(hh)が5だった場合にセル“D1”に分の値をスペース区切りで出力する事は出来ますか?今、関数で作成を試みてますが、なかなかうまくいきません。マクロなどで作成していただいても構いません。 B、C列は分けた方がやりやすいかと思い作りましたが、いらなければ使わなくても一行に構いません。 すいませんが、お分かりになる方は教えていただければと思います。 excel2007,OSはvistaとなります。

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

  • ベストアンサー
  • quicon9ue
  • ベストアンサー率31% (6/19)
回答No.1

Sub test3() Range("D1").ClearContents For Each c In Range("A1:A" & Range("A65535").End(xlUp).Row) If Hour(c) = 5 Then Range("D1").Value = Range("D1").Value & " " & Minute(c) & " " End If Next End Sub こんなかんじです。

noname#250977
質問者

お礼

書いてある意味がいまいちわかりませんでした。 確かにこれでできました。 ありがとうございます。 参考に致します。

その他の回答 (4)

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

A2セルから下方に時刻のデータがあるとします。 C1セルには5時の検索の場合には5と入力します。 その上で作業列としてB1セルは空白にしてB2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(HOUR(A2)=C$1,B1&" "&TEXT(MINUTE(A2),"00"),B1)) 答えはD1セルに表示するとしてD1セルには次の式を入力します。 =INDEX(B:B,COUNTIF(B:B,"*?")+1) これでD1セルにはそれぞれの分がスペースで区切られて表示されます。

noname#250977
質問者

お礼

回答ありがとうございます。 INDEX関数というものがあるんですね。 初めて知りました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

>(1)A列に5:00~5:59の範囲に入っているものがある場合、その[mm]分のみを同一セル(例:D1)にスペース区切りで出力したいと思っています。  すみません、もしかしますと、質問者様がおやりになりたい事は、 A1に「5:05」、A2に「5:30」、A3に「10:04」、A4に「5:56」、A5に「8:25」 と入力されている場合に、 D1に「5」、D2に「30」、D3は表示無し、D4に「56」、D5は表示無し と表示させる事ではなく、 D1に「5 30 56」 と表示させる事なのでしょうか。  もしそうである場合には、私の他にも、勘違いをされていた回答者の方も居られる事ですし、これから回答される方々のために、 D1に「5 30 56」 と表示させる方法で、良いのか、それとも間違いであるのか、に関して、補足されておかれた方が良いかと思います。  それから、肝心の数式ですが、申し訳御座いませんが、関数を使う方法で、私が思い付く事が出来たのは、 =IF(HOUR(A1)=5,MINUTE(A1)&" ","")&IF(HOUR(A2)=5,MINUTE(A2)&" ","")&IF(HOUR(A3)=5,MINUTE(A3)&" ","")&IF(HOUR(A4)=5,MINUTE(A4)&" ","")&IF(HOUR(A5)=5,MINUTE(A5),"") という、長ったらしい数式を、D1セルに入力する、というものです。  おそらく質問者様は、この様なA列の行数に比例して、数式の長さが増して行く方法は、望まれてはいないのではないかと思いますが、如何でしょうか。

noname#250977
質問者

お礼

このIF文をすごい並べるの、 自分もそれぐらいしか思いつきませんでした。 ただお忙しいところ御丁寧にご回答いただきありがとうございました。

noname#250977
質問者

補足

説明がわかりずらく、皆様方にご迷惑お掛けしてスイマセン。 「D1に「5 30 56」」と表示させたいと思っております。

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

B1セルに次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =TEXT(A1,"h m") hとmの間にスペースを入れることで任意の間隔を取ることができるでしょう。

noname#250977
質問者

お礼

TEXT関数というものがあるんですね。 念頭から頭になかったので参考にしてみます。 ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

すいません、この御質問文だけでは判らない点が幾つかありますので、補足して頂く様、御願い致します。 (1)A列の各セルの値の中に、5:00~5:59の範囲に入っているものがある場合に、そのセルと同じ行のD列のセルに、出力するのでしょうか。  それとも、A列の各セルの値の中に、5:00~5:59の範囲に入っているものがある場合に、D1セルのみに、A列の何れかのセルの分の値を表示するのでしょうか。  もし、後者だとしますと、5:00~5:59の範囲に入っているセルが複数ある場合には、D1セルに表示する、分の値には、どのセルの値を使えば良いのでしょうか。 (2)A列のセルのデータは、([セルの書式設定]の[表示形式]を[時刻]とする事で)シリアル値を時刻として表示させたものなのでしょうか。  それとも、普通の文字列なのでしょうか。 (3) >分の値をスペース区切りで出力 とは、分の値の10の位と1の位の間にスペースを入れて、分の値のみを表示するのでしょうか。  それとも、「:」を使わずに、時刻と分の間にスペースを入れて、時刻と分を表示するのでしょうか。  以上の点を補足願います。

noname#250977
質問者

補足

ご意見ありがとうございます。 質問いただいた点、回答致します。 (1)A列に5:00~5:59の範囲に入っているものがある場合、その[mm]分のみを同一セル(例:D1)にスペース区切りで出力したいと思っています。 (2)シリアルです。 (3)時は表示しません。分のみの表示にしたいと思っています。

関連するQ&A