新生活を充実させるための「こだわり」を取材!!

画像左の様な情報を、別ファイルの指定フォーマットに移し替える方法について教えてください!
今まではコピペしてました!
・空欄の行を削除
・D列の削除...などちょっとだけ加工が必要です

低難易度の「少しだけでも手間が省ける方法」から、中難易度?の常套手段?くらい?まで何パターンか教えていただけると助かります
やり方を調べようにもキーワードが分からず困っています、よろしくお願いいたします

「Excelデータを少し加工して別のファイ」の質問画像
教えて!goo グレード

A 回答 (11件中1~10件)

[No.7]の mike_g ですが、今になって気付いたことだけど、貴方の添付図で、元データと出力データが同一シート上になっていた(片やァA~E列、此方ァG~J列)ので、出力は「別ファイル」を所望されていたことを失念しておりました。


「元データ」Sheet1 のブック名は BOAC_go.xlsx
「出力データ」Sheet1 のブック名は BOAC_go2.xlsx
とした場合の様子が此処の添付図です。ちなみに、[検索条件範囲]は「元データ」の近く 範囲 G1:G2 に移動シチョリます。

【要注意事項】出力データが(同一ブックであれ別ブックであれ)別シートの場合は、作業を始めるのは別シート(逆に言えば、出力データ側)からでなきゃアキマヘン!
この場合の「作業」というのは、[データ]⇒[並べ替えとフィルタ]⇒…のことです。

添付図で一部尻切れトンボになっている部分は、
[リスト範囲]→[BOAC_go.xlsx]Sheet1!$A$2:$E$30
[検索条件範囲]→[BOAC_go.xlsx]Sheet1!$G$1:$G$2
「Excelデータを少し加工して別のファイ」の回答画像11
    • good
    • 0

忘れていた[No.7]用の添付図です。

「Excelデータを少し加工して別のファイ」の回答画像10
    • good
    • 0

こんばんは


データを書き出す VBAです。(出力なので元の表は残ります)
少し難しいかもなので説明を入れてあります
*B列の値は数式で求めたものでない事 (数式の場合は一部変更が必要)

Sub test()
Dim Rng As Range, r As Range
Dim Ary()
Dim n As Long, blk As Long
'A列の2行目から最終行をセット (1列目)
Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp))
'B列の空白セルをカウント(CountBlank)ここ注意
blk = Application.CountBlank(Rng.Offset(, 1))
'配列のサイズを設定 B列値のあるセル数、出力(列数)
ReDim Ary(Rng.Offset(, 1).Count - blk, 3)
'A列をループ
For Each r In Rng
'B列セルに文字が入っていれば
If r.Offset(, 1) <> "" Then
'A列セルの値を配列に(0から)
Ary(n, 0) = r.Value
'B列セルの値を配列に
Ary(n, 1) = r.Offset(, 1).Value
Ary(n, 2) = r.Offset(, 2).Value
Ary(n, 3) = r.Offset(, 4).Value
'次の行の為配列インデックスに1を加える
n = n + 1
End If
'繰り返し
Next
'G1を基準にWithで出力処理&書式設定
With Range("G1") '基準変更可
'A1セルの値をG1セルに
.Value = Range("A1").Value
'G1から4列分結合
.Resize(, 4).Merge
'中央揃い
.Resize(, 4).HorizontalAlignment = xlCenter
'G1セルの下(G2セル)以下に加工した値を出力
.Offset(1).Resize(UBound(Ary) + 1, 4) = Ary
'G2から最終行
With Range(.Offset(1), Cells(Rows.Count, .Column).End(xlUp))
'G列をA列の書式に設定
.NumberFormatLocal = Range("A2").NumberFormatLocal
'H・I列をB列の書式に設定
.Offset(, 1).Resize(, 2).NumberFormatLocal = Range("B2").NumberFormatLocal
End With
'G1セルを含む空白に囲まれた範囲に罫線を引く(実線のみ)
.CurrentRegion.Borders.LineStyle = xlContinuous
End With
End Sub

標準モジュールに記載
コピーブックでA~Eの表のみで試してみてください
    • good
    • 0

VBAでの方法です。



VBAで削除してしまうと元に戻せないので
別シートにデータをコピーしてから試してみてください。

Sub Test()
Dim lastRow, r As Long
Dim emptyRows As Range

'表の最終行を求める
lastRow = Cells(Rows.count, "A").End(xlUp).Row

With ActiveSheet
'2行目から表の最終行まで空白行がないか確認する
For r = 2 To lastRow
'B列のセルが空白なら変数 emptyRows に追加する
If IsEmpty(Cells(r, "B").Value) Then
'最初の空白行の場合は、その行のA列~E列を emptyRows に設定する
If emptyRows Is Nothing Then
Set emptyRows = Range(Cells(r, 1), Cells(r, 5))
'2つ目からは順次 emptyRows に追加する
Else
Set emptyRows = Union(emptyRows, Range(Cells(r, 1), Cells(r, 5)))
End If
End If
Next r

'emptyRows(空白行)を削除し上方向にシフトする
emptyRows.Delete Shift:=xlShiftUp

'D列を削除し左方向にシフトする
Columns("D").Delete Shift:=xlShiftToLeft

End With

End Sub
    • good
    • 0

超簡単but手順を逐一書くと超難問に見える(^_^)


1.2行目全体を選択⇒マウスの右クリック⇒[挿入](空白行の挿入)
2.セル A2、B2、…、E2 に左から あ、い、…、お を入力
3.範囲A1:E2 を選択⇒ Ctrl+C ⇒セル G2 を選択⇒ Ctrl+V をパシーッ
4.式 =E3<>"" をセル L2 に入力(TRUEと表示)
5.[データ]⇒[並べ替えとフィルタ]⇒[詳細設定]
6.[抽出先]として、“指定した範囲”に目玉入れ⇒[リスト範囲]ボックス
 ̄ ̄内にマウスポインタを放り投げ入れ⇒セル A2 をツン(当該ボックス
 ̄ ̄内に Sheet1!$A$2 が表示)⇒ Ctrl+Shift キーを抑えたままで下矢
 ̄ ̄印(↓)キーを1回だけツン(当該ボックス内の表示が
 ̄ ̄Sheet1!$A$2:$A$30に変化)⇒なおも Ctrl+Shiftキー を抑えたまま
 ̄ ̄で右矢印(→)キーを1回だけツン(当該ボックス内の表示が
 ̄ ̄Sheet1!$A$2:$E$30 に変化)⇒おもむろに左手指をキーボードから
 ̄ ̄離して、マウスポインタを次下の[検索条件範囲]ボックス内に放り
 ̄ ̄投げ入れ⇒範囲 L1:L2 を撫で撫で(当該ボックス内の表示が
 ̄ ̄Sheet1!$L$1:$L$2 に)⇒おもむろにマウスポインタを次下の抽出
 ̄ ̄範囲]ボックス内に放り投げ入れ⇒範囲 G2:K2 を指定(当該ボックス
 ̄ ̄内が Sheet1!$G$2:$K$2 に)⇒[OK]ボタンを「エイヤッ!」と
 ̄ ̄クリック
オ・シ・マ・イ(フゥー!)

お見苦しければ、追加していた2行目を削除!
    • good
    • 0

フィルタの空白外すのが正解。


ただ、その前に山田のセル結合は、不要。それが無駄。
そこに入れるなら、日付、出勤時間、退勤時間、勤務時間、区分とか?
項目名を入れることが大事ですね。
    • good
    • 0

こんばんは



元データを削除してしまうと元に戻せなくなるかもなので、まずはシート全体をコピーして以下を試してみてください。

>・空欄の行を削除
以下では「空蘭の行」とは「B列が空セルの行」として解釈して、説明しています。

1)D列を選択して「削除」
 (D列がなくなり、E列が新しいD列になります)
2)データ範囲に対して
 2-1)リボンの「データ」-「フィルタ」の機能でB列の空白のみを表示
 2-2)表示された空蘭の行全体を選択して「削除」
 2-3)フィルターを解除
(以上で、B列が空の行は全て削除され、上に詰められます)
以上で、お求めの結果になるのではないかと思います。

もっと簡単にしたければ、VBAを利用することで可能ではありますが、ひとまずはこれで。
    • good
    • 0

①2行目に空行を挿入します。


②A2からE20(範囲の最終セルまで)を範囲選択します。
③メニューのデータ→並べ替えとフィルター から フィルターをクリック。
④2行目に▼ボタンが並ぶので、空白のある項目のある列の▼をクリック。(B,C,E列のどれでもいいです)
⑤フィルタ条件で「空白セル」のチェックを外します。
⑥空白だった行が非表示になり、詰めた状態で表示されます。
⑦詰められた状態を範囲選択してコピー。(A3:E28になりますね)
⑧横に移動して、G3セルに貼り付け。
⑨メニューのデータ→並べ替えとフィルター から フィルターをクリック。フィルターモードが解除されます(▼が消えます。)
⑩①で追加した2行目の空白行を削除。
⑪貼り付けたG列以降のデータの、J列を削除

で、データとしてはコピー完了。
「Excelデータを少し加工して別のファイ」の回答画像4
    • good
    • 1

手作業ではだめですかねぇ。


ちょっとだけ、
D列を削除して、全体を、
並べ替える(E列を主キーにして)・・・すると空白の行は下方に集まる
次にA列をキーにして並べ替える・・・すると月日順に並ぶ
コピペでは?
    • good
    • 0

コピーしたいエクセルも開いておく。


今のエクセルのシート名にカーソルあわせて
右クリック、移動またはコピーを選ぶ
コピー先のファイルを選び、元を残す。
シートが、丸々複製ができます。

空白の削除等は、見ながらの操作でしょうか。
マクロを作れば可能ですが、簡単にまとめきれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング