マクロ初心者です。
Excelでセル内の一部のみ同じセルを検索し、そのセルと同じ行で任意の列のセルを選択させ、別ファイルにコピペする方法がわかりません。
いま下記のコードで実行しても、任意の列のセルを選択できない状態です。
データ①のB28のセルに「2021/12/11 10:00」と書かれており、そのセルを分割させ、C28に「10:00」と記載させています。データ②では1時間ごとのデータが記載されており、データ①のC28と同じ表記にするために元々A3に「1」………A26に「24」という表記を無理やり時刻のデータに変更させています。また。データ①からデータ②にコピペし、検索しているのですができません。
自分が行っているやり方はおそらく効率が悪いやり方だと思います。
ご教示いただけると幸いです。
よろしくお願いいたします。
Windows("データ①").Activate
Range("C28").Value = Split(Range("B28").Text, " ")(1)
Windows("データ②").Activate
Range("A3").Select
ActiveCell.FormulaR1C1 = "1:00"
Range("A3").Select
Selection.NumberFormatLocal = "h:mm;@"
Selection.AutoFill Destination:=Range("A3:A26"), Type:=xlFillDefault
Range("A3:A26").Select
Windows("ERD20211211.csv").Activate
Range("C28").Select
Selection.Copy
Windows("DMD20211211.csv").Activate
Range("B33").Select
ActiveSheet.Paste
Dim txt As Variant
Dim rng As Range
txt = ActiveCell.Value
Set rng = Sheets("DMD20211211").Range("A3:A26").Find(What:=txt)
If rng Is Nothing Then
MsgBox "見つかりませんでした。"
Else
Cells(rng.Row, "G").Select
Application.CutCopyMode = False
Selection.Copy
Windows("データ③").Activate
Range("BL17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
No.2ベストアンサー
- 回答日時:
こんにちは
>10:00や10:30の「10」のみを分割、抽出する方法をご教示いただけると幸いです。
これに付いての回答です。
前回、Range("C28").Value = Split(Range("B28").Text, " ")(1) で
半角スペースを区切り文字で 10:00 を抽出するコードを教えてもらってたと思いますが、、
(シリアルでなくテキストベース)
このコードを応用すれば良いと思いますが、意味を理解できていないと言う事でしょうか。
テキストベースと言う事がはっきりしているのなら
この Range("C28").Value の値を : 区切りで取得すれば
10が得られると思います
= Split(Range("C28").Text, ":")(0)
B28からいきなりなら
( 'シリアルの可能性があるなら書式設定は文字列にしてください)
Range("C28") = Split(Split(Range("B28").Text, " ")(1), ":")(0)
10:00 からなら 文字からであれば、
Split("10:00", ":")(0) *半角、全角を確かめて
文字の操作で取得するなら(一例)
= Left(Mid(Range("B28").Text, InStr(Range("B28").Text, " ") + 1), InStr(Mid(Range("B28").Text, InStr(Range("B28").Text, " ") + 1), ":") - 1)
半角スペースと半角コロンの間の文字列です
ご回答ありがとうございます。
参考にさせていただきます。
申し訳ありませんが、意味を理解してません。
教えていただいた下記コードの最後の文字「(0)」はどういう意味でしょうか。(前回教えていただいたコードの最後「(1)」も)
= Split(Range("C28").Text, ":")(0)
また、かなり効率は悪いですが、下記コードで無理やり完成させました。
TextやValueのところは理解できていないので、これもご教示いただけると幸いです。
Range("C28").Value = Split(Range("B28").Value, " ")(1)
Range("D28").Value = Split(Range("C28").Text, ":00:00")
Range("D28").Value = Split(Range("D28").Text, ":30:00")
No.1
- 回答日時:
データが一致していないという事を疑ってみましょう。
「10:00」という表示が実は、
「2021/12/11 10:00」かもしれませんし、
「2021/12/17 10:00」かもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) 指定の条件に応じたセルの場所に〇印(図形)を描く 2 2022/11/08 15:26
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
VBA 空白セルを削除ではない方...
-
合計3TBのデータのハッシュ値を...
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
シーケンサにパソコンからアク...
-
メモ帳(テキストデータ)をExc...
-
VBAを使ってOutlookメール本文...
-
VBA & easycomm で長時間測定の...
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
<VB>String→Object
-
ユーザーフォームのテキストボ...
-
ACCESSからEXCELに出力する際、...
-
モーションキャプチャのプログ...
-
配列でデータが入っている要素...
-
パースとはなんですか?
-
この行は既に別のテーブルに属...
-
VB6でCSVの取込をする
-
ウィンドウ枠の固定を行の2箇所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報
本文では、データ①のB28のセルに「2021/12/11 10:00」と書きましたが、「2021/12/11 10:30」の場合もあります。(30分単位)
10:30の場合は10:00と同じデータ②のA列の「10」の行のG列を選択するようにしたいです。
なので、xx:00とxx:30の2つの場合で、A列の「xx」の行のG列を選択するためにはどのようなコードにすればよろしいでしょうか。
ご教示いただけると幸いです。
また、本文では時刻の表記で「10:00」で検索していますが、「10:30」の場合はデータ②が1時間ごとのデータとなるため、検索しても見つからない状態です。
そのため、10:00や10:30の「10」のみを分割、抽出し、「10」で検索すれば対応できるのではないかと考えています。
10:00や10:30の「10」のみを分割、抽出する方法をご教示いただけると幸いです。