• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付と文字の結合と表示形式について)

Excel2003で日付と文字を結合して表示する方法

このQ&Aのポイント
  • Excel2003で日付と文字を結合して表示する方法について教えてください。
  • 質問者は、Excelの特定のセルに入力された日付と文字を結合して、別のシートのセルに表示したいと考えています。
  • 質問者のコードでは、日付の表示形式が「平 25/5/14」になってしまい、ある特定の形式「13/05/14」に変更したいとしています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

失礼しました。検証用の手元のマクロから回答した時にダイジェストしたのが失敗でした。 dim day1 as string day1 = format(worksheets("Sheet1").range("A1").value, "yy/MM/dd") です。 #敢えて言えばtext1やtext2もstringで拾っておいた方が、簡単でいいんじゃないかな?とは思いました。 ## 勿論すべてをrangeに統一して dim text1 as range dim text2 as range dim day1 as range set day1 = worksheets("Sheet1").range("A1") set text1 = worksheets("Sheet1").range("B1") set text2 = worksheets("Sheet1").range("C1") worksheets("Sheet2").range("A1") = format(day1.value, "yy/MM/dd") & text1.value & text2.value などのように組むのもアリです。

souko3
質問者

お礼

たびたび有り難う御座います 先の補足にて申し上げましたが原因が他にありまして 結論から申し上げると私の単純なポカでした!ごめんなさいw 西暦表示にしてからこちらのコードを試したらバッチリ 上手くいき、目的が達成できましたのでベストアンサーと させて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

day1 = format(worksheets("Sheet1").range("A1").value, "yy/MM/dd") でよろしいかと。

souko3
質問者

お礼

keithinさんお久しぶりです。 いつも回答頂きまして有り難う御座います。 さっそく上記のコードに修正し実行したところ他のセルの 文字列と結合しなければ望み通りの表示となりました。 コード wst2.Range("A1").Value = day1 結果 2013/5/14 しかし、B1とC1にある文字列を結合するとやはり 『平 25/5/14』という表示になってしまいます。 コード wst2.Range("A1").Value = day1 & text1 & text2 結果 平 25/5/14組立完了出荷準備中 文字列との結合で何故この様な表記に変わってしまうのか 調べていたのですが原因は結局分りませんでした。

souko3
質問者

補足

すいません自己解決できました>< というか原因は凄く単純で、私のパソコンの日付設定が和暦なのが原因で、文字列と結合すると平 25という表記になるみたいでした。 試しに西暦4桁表示にして以下のコードを入力した所、解決できました。 Sub test4() Dim wst As Worksheet Dim wst2 As Worksheet Dim text1 As Range Dim text2 As Range Dim day1 As Date Dim strday As String Set wst = Worksheets("sheet1") Set wst2 = Worksheets("sheet2") Set text1 = wst.Range("b1") Set text2 = wst.Range("c1") day1 = Format(wst.Range("a1"), "yyyy/mm/dd") strday = Mid(day1, 3, 2) & "/" & Mid(day1, 6, 2) & "/" & Mid(day1, 9, 2) wst2.Range("A2").Value = day1 wst2.Range("A1").Value = strday & text1 & text2 End Sub 結果 13/05/14組立完了出荷準備中 ←目的の表示 意外すぎて全然気付けなかった為、余計なお手数を取らせてしまってすいません。 これにてこの質問は〆とさせて頂きます。 有り難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロについてです

    Sub 転記_Click() Dim wst1 As Worksheet Dim wst2 As Worksheet Set wst1 = ThisWorkbook.Worksheets("Sheet1") Set wst2 = ThisWorkbook.Worksheets("Sheet2") For i = 10 To 12 If wst1.Range("A" & i) <> "" And Not IsNull(wst1.Range("A" & i)) Then myRow = wst2.Cells(Rows.Count, 1).End(xlUp).Row + 1 wst2.Range("A" & myRow) = wst1.Range("D4") wst2.Range("B" & myRow) = wst1.Range("A4") wst2.Range("C" & myRow) = wst1.Range("A" & i) wst2.Range("D" & myRow) = wst1.Range("B" & i) wst2.Range("E" & myRow) = wst1.Range("C" & i) wst2.Range("F" & myRow) = wst1.Range("D" & i) End If Next i wst1.Range("A4").ClearContents wst1.Range("A10:C12").ClearContents End Sub こんにちは、はじめまして!よろしくお願いします!! 今回イベントの係になりました、複数人の回答を集計するのに上のを 作って頂きシュミレーションも上手くいったのですが… この集計とは別にA6の項目も準備の為に必要だと個人的に思い 昨日一晩色々と試したのですが、上手くいきません。 メモ的なものですので、同じSheet2(転記データの横)の G H I とかに  D4 A5 A6と3箇所 上から順番に"一行だけ"入るようには出来ないでしょうか。 もしくは、シートを増やして新Sheet3のA B C に D4 A5 A6 と上から順番に転記され入る様にしたいです。(一行だけ) (※自分でやると G H I に3行も同じものが転記されてしまいます、上3行空いて4行目から、入ったりします) クラブ活動の合間とかに各々に回答してもらう予定です。 ボタンを押すと転記されその後クリアで空欄にし次の人…なる設定にします、 1回のボタンで出来ますでしょうか(上のものに組み込んだり出来るでしょうか) お詳しい先生方どうぞよろしくお願いします。

  • VBA 別シートのセルから、文字列を参照するには?

    Excel VBAに於いて 同BOOKのSheet1から、Sheet2の文字列を変数に入れよとするとエラーになります。 何故でしょうか。 また、その対処法を、御教示ください。 Dim objWBK As Workbook Dim objSH As Worksheet Set objWBK = ThisWorkbook Set objSH = objWBK.Sheet2 Dim cnsFILENAME As String cnsFILENAME = objSH.Range("a4")     ← ここで、「オブジェクトは、このプロジェクトでサポートされていません。」と、エラーメッセージが出る。 Sheet2.Range(”A4”)には、文字列を入れてある。 以上、よろしくお願いします。

  • ExcelVBA シートのコピーについて

    こんにちは! VBAにて連番のシートを作成するマクロを組みました 1日→2日→3日・・・→60日 Sub シートコピー() Dim i As Integer, wst As Worksheet Set wst = Worksheets("コピー元") For i = 1 To 60 wst.Copy After:=Worksheets(i + 2) Worksheets(i + 3).Name = i & "日" Next Set wst = Nothing End Sub 54日まで作ることは出来たのですが、なぜか55日からが作成できません その後シートを消し、もう一度実行すると、1枚もシートが作れません この現象は何でしょうか? また、どうやれば60枚分コピーできるでしょうか?

  • Excel VBA シート非選択で表示形式を設定

    Excel2010 VBAで、 ワークシートを選択しない状態で、 このワークシート上のセルの書式設定の表示形式を 数値の少数点以下の桁数1桁 (NumberFormatLocal = "0.0_ ") に設定することはできるのでしょうか。 例えば、 以下のように、WORKという名前のシート(WS2)があって、 Dim WS2 As Worksheet Set WS2 = ThisWorkbook.Sheets("WORK") WS2.Select WS2.Range("A1").Select Selection.NumberFormatLocal = "0.0_ " とすれば、 正しく設定することができるのですが WS2が選択されていない状態で、 WS2.Range("A1").Select を実行するとエラーになります。 (実行時エラー'1004' 'Range'メソッドは失敗しました: 'Worksheetオブジェクト') そこで、NumberFormatLocal を Selection ではなく、 WS2.Range("A1").NumberFormatLocal = "0.0_ " というような記述ができればよいのですが、 実際にはエラーになります。 シートを選択しなくても、 このシート上にあるセルに NumberFormatLocal を 適用するすることはできるのでしょうか。

  • VBA 検索して一致したセルへジャンプさせたい

    Excelにて、シート1のA列とシート2のA列のデータにNoを入れます。 シート1のA列のNoをクリックすると、シート2のA列の同じNoにジャンプするマクロを組みたいです。 現在組んでいるマクロは、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Sht As Worksheet Dim Rng1 As Range Dim Rng2 As Range Dim FindCell As Range Set Sht = Worksheets("シート2") Set Rng1 = Range("A2:A100") Set Rng2 = Sht.Range("A2:A100")If Intersect(Target, Rng1) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub Set FindCell = Rng2.Find(Target.Value) If Not FindCell Is Nothing Then Application.Goto Reference:=FindCell, Scroll:=False End If End Sub です。 一応マクロは実行されますが、そうすると、シート1のA列の編集(Noを追加したり変更したり・・・)できません。 編集や変更もできて、検索マクロも実行できるというマクロの組み方はありますでしょうか?

  • どなたかマクロ修正お願いします。

    自分なりに 作成してみましたがどうもうまくいきません。 Sub 変換() Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet, Dim r As Range Set Sh1 = Worksheets("1") Set Sh2 = Worksheets("2") Set Sh3 = Worksheets("3") Sh3.Select Set c = Cells.Find(What:="9876543", LookAt:=xlWhole) c.Offset(, 1).Activate ActiveCell.Replace What:="中田", Replacement:="中田英寿" End Sub このように作成しましたがうまくいきません。恐らくsheet3のデータはsheet1から( =1!A100 )といったように値を他のsheetから持ってきてるからではないんでしょうか?

  • VBA どうしてなのでしょうか?

    どうしてなのかまったくわかりません… Sub test() Dim TW As Worksheet Set TW = Worksheets("Sheet2") TW.Activate Range("G5").Activate End Sub は良いのに Sub test() Dim TW As Worksheet Set TW = Worksheets("Sheet2") TW.Range("G5").Activate End Sub はエラーがでます… この理由をご存知の方いらっしゃいますか?? よかったら教えていただけませんか?

  • 特定の文字以外を入力すると別シートに表記する方法

    Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim StrRow As Long Dim TgtCol As Long Dim MaxRow As Long Dim ChgRow As Long Dim PutSh1 As Worksheet Dim PutSh2 As Worksheet Dim PutSh3 As Worksheet Dim PutCol As Long Dim PutRow As Long Dim ChgRng1 As Range Dim ChgRng2 As Range Dim ChgRng3 As Range StrRow = 5 MaxRow = 35 If Target.Count > 1 Then Exit Sub If Target.Value = "" Then Exit Sub Set PutSh1 = ThisWorkbook.Sheets("Sheet2") Set PutSh2 = ThisWorkbook.Sheets("Sheet3") Set PutSh3 = ThisWorkbook.Sheets("Sheet4") With ThisWorkbook.Sheets("Sheet1") Set ChgRng1 = Range(.Cells(StrRow, 3), .Cells(MaxRow, 3)) 'C列 Set ChgRng2 = Range(.Cells(StrRow, 5), .Cells(MaxRow, 5)) 'E列 Set ChgRng3 = Range(.Cells(StrRow, 7), .Cells(MaxRow, 7)) 'G列 End With ChgRow = Target.Row If Not Intersect(Target, ChgRng1) Is Nothing Then Target.Offset(0, -1).Value = Target.Offset(0, -1).Value + 1 DataPut PutSh1, ChgRow, Target.Value End If If Not Intersect(Target, ChgRng2) Is Nothing Then Target.Offset(0, -1).Value = Target.Offset(0, -1).Value + 1 DataPut PutSh2, ChgRow, Target.Value End If If Not Intersect(Target, ChgRng3) Is Nothing Then Target.Offset(0, -1).Value = Target.Offset(0, -1).Value + 1 DataPut PutSh3, ChgRow, Target.Value End If End Sub 以前質問させて頂いた内容で追加の質問です。 Sheet1の指定したセルに「ー(ハイフン)」の文字がある時は、Sheet2〜4に転送(表記)しない方法を追加する場合はどの様にすれば宜しいでしょうか?

  • カットして隣のB列に順番にペーストするマクロ

    発注と納品の確認マクロを作成しました。 Sheet1の列を検索して、Sheet2にあればその数字のあるセルを赤くするのですが、 それを以下のように変更することは可能でしょうか? Sheet1の列を検索して、Sheet2にあれば、Sheet2上でその数字をカットして隣のB列に上から順番にペーストします。 宜しくお願いします。 Sub 発注と納品の確認マクロ() Dim Ws1 As Worksheet Dim Ws2 As Worksheet Dim myRange1 As Range Dim myRange2 As Range Dim c1 As Range Dim c2 As Range Dim myCt As Long Set Ws1 = Worksheets("Sheet1") Set Ws2 = Worksheets("Sheet2") Set myRange1 = Ws1.Range("A1", Ws1.Cells(Rows.Count, "A").End(xlUp)) Set myRange2 = Ws2.Range("A1", Ws2.Cells(Rows.Count, "A").End(xlUp)) For Each c1 In myRange1 myCt = 0 For Each c2 In myRange2 If c2.Value = c1.Value Then If myCt = 0 Then c2.Interior.ColorIndex = 3 Else c2.Interior.ColorIndex = 43 End If myCt = myCt + 1 End If Next c2 If myCt = 0 Then c1.Interior.ColorIndex = 6 Next c1 Set Ws1 = Nothing Set Ws2 = Nothing Set myRange1 = Nothing Set myRange2 = Nothing End Sub

  • VBAのオブジェクト変数について

    人に教えなければいけないことなので、、、 困っています。 あるVBAのテキストを見て、そのテキストをそのまま入力しても実行できません。 (条件としては、Book1.xlsとBook2.xlsというファイルを開いた状態で、Book1.xlsのほうに、以下のモジュールを入力します。) Sub Set1() Dim myBook As Workbook Dim mySheet As Worksheet Dim myCell As Range Set myWBook = Workbooks("Book2.xls") Set myWSheet = Worksheets("Sheet2") Set myCell = Range("A1:D10") myWBook.Activate myWSheet.Activate myCell.Value = "ABC" End Sub これを実行すると、アクティブな状態のファイルにしか、値"ABC"が入ってこないのです。テキストでは、Book2.xlsのSheet2のA1:D10に値"ABC"が入ってくると言っていますが、Book1.xlsに値が入ってしまったりします。 長くなってしまってすみません。 もちろん、他の方法で実現することができるのはわかるのですが、なぜこのコードが実行できないのかがわかりません。 理由を教えていただけたら・・・と思います。 よろしくお願いいたします。

専門家に質問してみよう