• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA の作り方について【初心者】)

Excel VBA の作り方について【初心者】

このQ&Aのポイント
  • Excel VBA の作り方について質問させてください。A1セルに「営業部【山本】」と入力されています。B1セルに「01:35:24」(タイム)と入力されています。
  • (1)D1セルに「山本」を抜き出して表示 (2)E1セルに「95」(分数)で表示 (3)A2以降で同じ作業の繰り返し(最終入力列まで) というVBAを作成しております。
  • プログラムが完成している状態で、(4)C列セルに入力されている数値をF列セルにそのまま入力したい場合には、どの部分にどのようなプログラムを追加すればよいでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

すでに回答が出ているが、少し違った考え方のコードで書いてみます。 データに統一ルールはずれの表現がある場合は、ややこしく(エラー等)なりますので注意。 例データ A-D列、C,D列が答え 営業部【山本】 1:35:24 山本 95 人事部【長谷川】 3:15:02 長谷川 195 業務推進部【今】 5:36:24 今 336 コード 前半はVBAのSPLIT関数を使っている。 後半の時刻の方は秒を「なし」にしてしまって考える手もあるが、そのまま分に直しても良いのかなとも思った。予期している答えと違う場合は式を修正してください。 前半はプロセスを見せるために、Msgboxで、しつこく変数の中身を出しているが、納得で来たら、すべてMsgboxの行は削除のこと。 Sub test01() Dim b() As String Dim c() As String For i = 1 To 3 a = Range("A" & i) MsgBox a b = Split(a, "【") MsgBox b(0) MsgBox b(1) c = Split(b(1), "】") MsgBox c(0) MsgBox c(1) Range("C" & i) = c(0) Next i '-- For i = 1 To 3 t = Range("B" & i) * 24 * 60 MsgBox Int(t) Range("D" & i) = Int(t) Next i End Sub 24*60(分の場合)や24*60*60(秒の場合)をかけるのは判りますか? 日付時刻しりあるちというものの仕組みからこういうものを使う。 Googleで「日付時刻シリアル値」で照会のこと。 http://www.excel.studio-kazu.jp/tips/0049/ 以下のGooglenで出てくるサイトの記事を読むこと。 エクセルVBAはエクセルの(特に日付、時刻の)仕組みを知らないとVBAが組めない1例の箇所です。

noname#245127
質問者

お礼

ご返信ありがとうございました。 こんな解釈もあるんだと、ついつい頷きながら見てしまいました。 メッセージボックスが組み込まれていたので、一つ一つポイントを押さえて理解することができました。 シリアル値というのは初めて聞いたのですが、勉強してみようと思います。 本当にありがとうございました。

関連するQ&A