• ベストアンサー

セルとセルの文字列を結合について

   A     B       C 1       2008/1/2   0:00:00 2       2008/1/2   0:15:00 3       2008/1/2   0:30:00 4       2008/1/2   0:45:00 5       2008/1/2   1:00:00 6       2008/1/2   1:15:00 ↓     A          B       C 1 2008/1/2 0:00   2008/1/2   0:00 2 2008/1/2 0:15   2008/1/2   0:15 3 2008/1/2 0:30   2008/1/2   0:30 4 2008/1/2 0:45   2008/1/2   0:45 5 2008/1/2 1:00   2008/1/2   1:00 6 2008/1/2 1:15   2008/1/2   1:15 といった感じにA列に Bの日付とCの時刻を半角スペースを挟んで 入力させたいのですが Excel上で以下の関数を使って手動でやると =CONCATENATE("2008/1/1"," ",0:15) 2008/1/1 0:00 と表示されるが マクロでの記述上では上手くいかない。 For i = 1 To 10 Range("A1,A10") = CONCATENATE(Cells(i, 2), Cells(i, 3)) Next ↑書き方としてはやっぱり間違ってる? 何かいい書き方ってないでしょうか・・? お手数おかけいたしますがよろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

B列の日付、C列の時刻はいずれも日付型(シリアル値:セルの書式を標準にしたときに表示される値)で入力されていますか? だとするとVBAでは For i = 1 To 10  Cells(i, 1).Value = Format(Cells(i, 2), "yyyy/m/d") & _                Format(Cells(i, 3), "hh:mm:ss") Next i でよいと思います。ただしこのときのA列は「文字列」になります。

pou1986
質問者

お礼

ありがとうございます そのまま上記のマクロを追加してみたら正常に動作しました。

その他の回答 (2)

  • YSNR-HRN
  • ベストアンサー率36% (40/111)
回答No.3

ANo.1 をマクロに置き換えます。 ツール>マクロ>新しいマクロの記録で記録スタート    ↓ やりたいことをやってみる。    ↓ 記録終了    ↓ 記録されたコードを確認する Range("A1:A6").Select Selection.FormulaR1C1 = "=RC[1]+RC[2]"    ↓ 不要な部分等を修正する Range("A1:A6").FormulaR1C1 = "=RC[1]+RC[2]" となります

pou1986
質問者

お礼

試してはみましたが やってみたいことを入れると処理具合が不調になってしまいましたが 試してるうちに動作確認できました お手数おかけしましてありがとうございました

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆マクロはさておき A1=B1+C1 ★で、 2008/1/2 0:00 になります ★もしもこのように表示されなければ、表示形式を、 yyyy/m/d h:mm としてください

pou1986
質問者

お礼

そうですね Excel版だとそれで動きました マクロもいじってて追加してるうちにできたのでありがとうございましたw

関連するQ&A

  • 300個の文字列を結合し1個のセルに

    ファイル名変更ソフト「Namery」に使うのですが、セル1個に 001> 001a|002> 001b|003> 001c|004> 002a|005> 002a|006> 002c このようにして 300> 100c| までの文字列つくれませんか? VBAをお願いしたいのです。あるいは下記のD1からD300のセルの文字列を合体してE1に表示、でも良いのですが。 VBAを知らないので、次のような作業を始めましたが途中で疲労困憊です。 A1に001をいれオートフィルでA300までつくり B1に半角スペース+001a B2に半角スペース+002b B3に半角スペース+003c としてから 100c迄オートフィルし C1 に=CONCATENATE(A1,B1) C1をコピーD1に「値のみ貼り付け」してからオートフィル。 出来たD1からD300の文字列を1セルの文字列にするために、エクセルの30個までの制限のため何段階にも作業を分けなければなりません。 ファイル名変更ソフト=Namery の[連続置換・正規表現]に文字列を入れ目的を果たしたいのです。 http://www.vector.co.jp/soft/win95/util/se217399.html

  • Excelで複数セルからの文字の結合

    B列からF列までのセルの内容を結合してH列に表示させるため、 以下のVBAを使用したのですが、結果が上手くいきません 原因など分かりましたら、指摘をお願いします マクロの内容 Sub test01() Dim c As Range Dim i As Long With ActiveSheet i = 1 Do While .Cells(i, "A") <> "" If .Cells(i, "A") <> "" Then For Each c In .Range(.Cells(i, "B"), .Cells(i, "B").Cells(i, "F")) .Cells(i, "H") = IIf(.Cells(i, "H") = "", c, .Cells(i, "H") & "/" & c) Next c Else .Cells(i, "H") = .Cells(i, "B") End If i = i + 1 Loop End With End Sub シートの内容  ABCDEFGH 1 1あいうえお 2 2か くけこ 3 3さし せそ 実行の結果 あ/い/う/え/お/ か/き/く/け/こ//さ/し//せ/そ/ さ/し//せ/そ///////////// 上記のようになってしまいます 2行目の「か/き/く/け/こ」の後に1行下の「さ/し//せ/そ」 が入っている状態です よろしくお願いします

  • VBA For Eachでセル内の文字列を一個ずつ取り出すには

    エクセル2000です。 たとえばA1セル内の文字列を一個ずつ取り出す場合、 Sub test01() For i = 1 To Len(Range("A1").Value) Cells(i, "B").Value = Range("A1").Characters(i, 1).Text Next End Sub このように最初から最後の文字まで何番目で指定することはわかるのですが、これをFor Each で回すにはどうしたらよいでしょうか? (⌒o⌒)? お教えください。 Sub test02() For Each ch In Range("A1").Characters i = i + 1 Cells(i, "B").Value = ch Next End Sub ではエラーになります。

  • Excel マクロで困った

    A列 ------ B列 ------- C列 2716 ----- ------- =RSS|'2716.T'!更新時刻 2236 ----- ------- =RSS|'2236.T'!更新時刻 410 ----- ------- =RSS|'410.T'!更新時刻 9134 ----- ------- =RSS|'9134.T'!更新時刻 263 ----- ------- =RSS|'263.T'!更新時刻 手動 A列 は=RAND( ) で約 1万行 位 手動 C列 に=CONCATENATE( ) で A列 を挿入 =CONCATENATE($C$1,$C$2,$A11,$C$4,C$10) A11 の数字が全部同じになる困った マクロ C列 を完成   Range("c11").Select i = i + 11    f01: Cells(i, 3).Select     Selection.Copy     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _     :=False, Transpose:=False      Application.CutCopyMode = False      ActiveCell.FormulaR1C1 = "=RSS|'2716.T'!更新時刻" 注    Aの2716に数字が全部同じになる困った     i = i + 1     If Cells(i, 3) <> "" Then GoTo f01     End Sub

  • VBA 複数セルを選択する場合の記述について

    マクロにて、離れた複数のセルを選択したいのですが どのように記述してもエラーになってしまいます 例:Range("A1:C2,E1:F2") ※ 選択する部分を可変にしたいので全て cells(a,b)の方法で記述したいです ※ グラフのデータ選択に用いたいので一行で書きたいです 【失敗した記述】 ・Range(Cells(1,1),Cells(2,3),Cells(1,5),Cells(2,6)) ・Range(Range(Cells(1,1),Cells(2,3)),Range(Cells(1,5),Cells(2,6))) お手数ですが、よろしくお願いします

  • For文によるセル結合について

    A1:C1~G1:I1をFor文を使ってセル結合したいのですが 何故かうまく動きません。 For x = 1 to 9 step 3 Range("Cells(x,1):Cells(x+2,1)").Merge Next で試したのですがデバックエラーになり。 For x = 1 to 9 step 3 Range("x&1":"x+2&1").Merge Next でもエラーでした。 本にもCellを両方動かすサンプルが無くて困ってます。

  • 文字変換マクロについて

    数値を文字列に変換するマクロで、行数や列数が増えても対応できるようにしたいです。 (並びは…数値 スペース 文字列)どなたか教えてください。 よろしくお願いします。 Sub 文字() Dim i As Long For i = 1 To Range("A1").End(xlDown).Row Cells(i, "C") = Cells(i, "A") With Cells(i, "C") .NumberFormatLocal = "@" .Value = StrConv(Cells(i, "C").Value, vbNarrow) .Value = Format(Cells(i, "C").Value, "'00") End With Next i End Sub

  • EXCELマクロでの formula の使用に関して

    マクロ内で、 Range(c1).formula = "=A1+B1" と記述すれば セルC1に「=A1+B1」という式が入ります。 これはいいのですが・・・・ セルC1に 「=CONCATENATE(A1,"~",B1)」 というような「"」を使った数式を入れる場合、 どうにように formula文を作成すればいいのでしょうか? Range(C1).formula = "=CONCATENATE(A1,"~",B1)" ではダメです。 「"」の前に何か記号でもつけるのでしょうか?

  • 日付を入れるとセルがおかしくなります。

    http://okwave.jp/qa/q7495702.html 以前の質問で、空白になった行を詰めていくような マクロをおしえていただき、mt2008さんのコードを利用しているのですが、新たにB列に、C列に何かが入力されたら日付を挿入する以下のマクロをいれました。 Private Sub worksheet_change(ByVal Target As Excel.Range) Dim h As Range On Error Resume Next For Each h In Application.Intersect(Target, Range("C:C")) If h <> "" Then Cells(h.Row, "B") = Date End If Next End Sub このマクロはちゃんと動いたのですが、実はここで困ったことが発生しました。空白行を詰めた時、 日付が詰めた日付に更新されてしまうのです。これは、B列の文字列が変わるのでしょうがない現象なのですが、詰める時に、どうしても日付だけはそのままにして上に詰めたいのです。 そんなことは可能でしょうか・・

  • エクセルの日付と時刻の2つのセルの結合の仕方

    下記の日付と時刻の内容のセルの結合(合体表示)をしたいのですができる方いれば教えていただきたいのです。「」(かっこ)内がセル内の表記内容です。 A1に「2009.04.24」 B1に「20:45:00」 と入っていてこれを結合して C1に「2009.04.24 20:45」という表示にするにはどうすればよいでしょうか? 「日付 時刻」のようになり日付と時刻の間は半角1マス開いた形で日付は半角ドット「.」を用いてyyyy.mm.dd、時刻は半角コロン「:」を用いて、秒単位は省略してhh:mmと表示したいのですが、できますでしょうか?

専門家に質問してみよう