• 締切済み

歯抜けの時間を埋めて行の挿入

過去に同じような質問があり試しましたが、うまく出来ませんでしたので、教えて頂けないでしょうか。(エクセル2003を使用) 日付 時間 数値       10/9 9:00 3 10/9 9:01 2 10/9 9:03 5 10/9 9:05 2 上記の図のように、時間(分)が入力されているデータを、下記の図のように歯抜けデータを埋めて挿入するには、どうしたらよろしいでしょうか? 日付 時間 数値 10/9 9:00 3 10/9 9:01 2 10/9 9:02  ←挿入したいデータ 10/9 9:03 5 10/9 9:04  ←挿入したいデータ 10/9 9:05 2

みんなの回答

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

マッチング法 (1)Sheet1に1分刻みの時刻を作る(下記では600分、変えれば増やせる) (2)Sheet2から、Sheet1へ、もし同じ時刻があれば、Sheet2のB列の データを、Sheet1のB列に持ってゆく。 同じ時刻がSheet2に無ければ、Sheet1のB列のその行を飛ばしている。 ーーー Sub test01() lst = 600 '600分間 Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") '--Sheet1のA列に1分刻みの表作成 For i = 1 To lst sh1.Cells(i, 1) = TimeSerial(9, i, 0) Next i '-----両シートをマッチング k = 1 i = 1 cmp: If i > lst Or Cells(k, "A") = "" Then GoTo endr If sh1.Cells(i, "a") = sh2.Cells(k, "a") Then GoTo eql If sh1.Cells(i, "a") > sh2.Cells(k, "a") Then GoTo high If sh1.Cells(i, "a") < sh2.Cells(k, "a") Then GoTo low GoTo cmp: '-- eql: sh1.Cells(i, "B") = sh2.Cells(k, "B") i = i + 1 k = k + 1 GoTo cmp high: GoTo endr low: i = i + 1 GoTo cmp '--終わり endr: End Sub Sheet2のほうで、少数のデータでしかテストできてないので、よろしく。 上記がうまくうごくのは、Sheet1のA列は、エクセルの正式の時刻入力(時刻シリアル値)であることは、絶対条件です。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 以下は、同じ日付の判定のみです。それ以外はできませんので、もし違うようでしたら、範囲の部分を手書きで書き換えてください。 そのデータの使い方にもよりますが、たとえば、フィルハンドルでコピーしたものを、並べ替えなどでしても、データは、浮動小数点誤差が発生しているので、見かけの表示と内容が食い違ってしまっていることがあります。Text関数などで作る方法もあるかと思いますが、今回は、マクロを使いました。 '標準モジュール Sub TestEnterRows()   Dim r As Range   Dim i As Long   Dim m As Long   Dim n As Long      '範囲   Set r = Range("B2", Range("B65536").End(xlUp))      For i = r.Count To 2 Step -1     '整数比較     n = TimeValue(r.Cells(i, 1).Text) * 24 * 60     m = TimeValue(r.Cells(i - 1, 1).Text) * 24 * 60 + 1     If m <> n Then       r.Cells(i, 1).EntireRow.Insert       r.Cells(i, 1).Value = (TimeValue(r.Cells(i + 1, 1).Text) * 24 * 60 - 1) / _       (24 * 60)       r.Cells(i, 1).Offset(, -1).Value = r.Cells(i + 1, 1).Offset(, -1).Value       a = r.Cells(i, 1).Address       i = i + 1     End If   Next i   Set r = Nothing End Sub

mm679433
質問者

お礼

過去のデータがたくさんで困っていました。 作業のスピードが速くなります。ありがとうございました。

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

関連するQ&A

  • エクセルでデータの最後の行に行挿入後の合計されない

    エクセルで文字・数値データを作成しております。その最後の行に合計(SUMとSUMIFを使用)を出す表があります。 データの最後の行(合計の前)に行を挿入しデータ数値を入力すると、SUM(SUMIF)の合計が、前にあったデータまでしか、合計されません。 単純な計算では、行を挿入しても合計されるのに、ナゼ今回は出来ないのでしょうか?原因が分かる方は、いらっしゃいませんでしょうか? 宜しくお願い申し上げます。

  • エクセルで複数行挿入

    エクセルで複数行(列)挿入するには、行や列をその数分ドラッグするより他ないのでしょうか?数値を入力するダイアログボックス等ありますか?

  • wordフィールドの挿入

    ワード文書にエクセルからのデータ挿入について教えてください。 エクセルのデータで「"日付"フィールド」が空白の場合には『年月日』を、「"日付"フィールド」に日付が入力されている場合は、その日付をワード文書に挿入したいのですが、よく分かりません。 エクセルフィールド空白の場合、ワード文書への『年月日』挿入はできました。 恐らく「if then else」あたりを使用すると思うのですが、ご存知の方ご教授いただけないでしょうか。

  • エクセルマクロで行挿入

    エクセルマクロで行挿入 マクロ初心者です。 仕事で、受注した内容をエクセルで管理しているのですが、頻繁にキャンセルや日程変更があり、1日単位でデータを管理しているものですから、かなりデータ入力に労力が取られている状況です。 キャンセルや日程変更になったデータに関しては、行ごと削除するのではなく、行単位で取り消し線と文字を赤にして、見た目で無くなったということがわかるようにしています。 また、受注したら行を挿入して新しいデータを入力しています。 そこで、赤字で取り消し線にて入力されている行の一つ上の行に挿入、ということをマクロでできないかと思っています。 赤字に取り消し線の行に関しては、何行目になっているかはその日によって違うので、その指定と、書式を指定する方法がわからない状況です。 マクロで上記のことができるのであれば、ご教授いただけると助かります。 宜しく御願いいたします。

  • word2010での図の挿入に関して

    wordで図の挿入を行う際に 何があってもその図が動かないようにするように出来ますか? excelの既存データを使用してwordの差し込み印刷を行っています。 ひとにより1行分のデータが表示されるひともいれば 7行分のデータが表示されるひともいます。 excelを使用した差し込み印刷の表示データの あとに少し感覚をとって指定の位置に画像の挿入を行いたいのです。 普通に画像の挿入を行い 文字列の折り返しを背面に設定していますが 行の多さによって画像が上にいったり、下にいったり 指定の位置で留まってくれません。 どうにかして出来そうな気がしますが その「どうにか」が分かりません…。 詳しい方教えてください!!

  • Excel2010に図を挿入して背面に

    Excel2010 に図を挿入して、Excelのセル入力した文字上に挿入した図を重ね合わせます。 文字を最前面、図を背面にしたいのですができません。(図の上に文字が挿入されている形) テキストボックスでの文字入力の場合は文字最前面が可能なのですが・・・ Word2010では通常の文字入力上に図挿入し、図を最背面にする事が可能なのですが、 Excelでは上記のような事は不可能なのでしょうか? 私の知識不足で。。。「できるよ!」という方は方法を記載頂けると助かります。 よろしくお願いいたします。

  • VBAでの行挿入について

    Excel VBAの条件に合った場合、行挿入&挿入した行のセルに特定の値を入力 VBA初心者です。Excel2007、XPを使用しています。 A列からCK列、平均100行程度の顧客データがあります。 このデータは列数は変わりませんが、行数は毎回異なり、 1行1顧客ではなく、同じ顧客で数行で入ることがあります。 しかしA列の顧客番号で判別できるようにはなっています。 目標は下記の点です。 「BC列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「ポイント利用」と入力。 挿入した行のAC列に「BC列の値」を入力。 挿入した行のAB列に「1」を入力。 「BJ列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「送料」と入力。 挿入した行のAC列に「BJ列の値」を入力。 挿入した行のAB列に「1」を入力。 以降に必要な処理はマクロで作成できたのですが、 その後に上記項目を手作業で処理しているのも限度があるので、 最初に挿入処理できればと思ってます。 分かりづらい説明だとは思いますが、 何卒ご教授頂きたくお願い致します。

  • エクセルで自動的に行を挿入できますか?

    エクセルで、データ入力をしています。すべてのデータではないのですが、ほとんどのデータは同じ内容(コードNo.や日付など)を2行入力する必要があります。何か項目を追加して、その内容が1のときは同じ内容を次の行にコピーする、なんてできるのでしょうか?

  • エクセルで行の挿入などだんだん動作が遅くなってきます。

    大きなエクセルファイルを開いています(2Mほど)。 そのファイルを開いてすぐの状態だと、行の挿入を行っても ほとんど時間がかからずできるのですが、 何度か挿入を繰り返しているうちに挿入の動作がとても重くなってしまいます。 (数十秒はかかるようになります。) 原因を考えてみてもよくわからず、再計算を手動に 切り替えるなどしてみたのですが変わりませんでした。 Undo用のデータが大きくて時間がかかっているのかな~とも思いましたが どうしていいかわかりません。 このようにEXCELの動作に時間がかかるようにならないためには どのような方法があるでしょうか?

  • VBA 列の挿入

    はじめまして。 エクセル初心者です。 はじめてVBAを使用しファイルを作っているのですが、どうしても解決策が見つからないので質問させてください。 【 SheetA~SheetG 】 までデータを入力し 【 Sheet集計 】 で上記のSheetで列の挿入しても大丈夫なようにINDEX・ROW・COLUMNを使い集計 【 Sheet入力 】 で【 Sheet集計 】のデータを表示する ここまではうまくいきました。 ------------------------------------------------ 【 Sheet計算書 】というあらたなSheetを作り 【 Sheet入力 】のデータの一部を使用し表示させ、そこにサイズ・重さなどを入力。 【 SheetA~SheetG 】 に列を挿入してデータを追加すると 【 Sheet入力 】まではうまく集計できますが、【 Sheet計算書 】では挿入した部分のためにサイズ・重さなどが挿入した分だけずれてしまいます。 これでは使えません・・・。 【 SheetA~SheetG 】のどこの部分に列を挿入しても 【 Sheet計算書 】でその挿入した部分のみ認識し【 Sheet計算書 】に列を追加することはできないでしょうか? 教えてください。 【 SheetA 】の参考画像添付しました。Bの列には同じ記号、数字は入りません。 Windows7・EXCEL2010使用です。 よろしくお願いします。

このQ&Aのポイント
  • mfcj7100cdwのスマホからA3印刷ができない場合、解決方法をご紹介します。
  • スマホからmfcj7100cdwのA3印刷を設定する方法について解説します。
  • mfcj7100cdwでA3両面印刷ができない場合、お使いの環境や設定を確認しましょう。
回答を見る

専門家に質問してみよう