Excelデータの特定の値を右上のセルへ移動する方法

このQ&Aのポイント
  • Excelデータをエクスポートする際、特定の値を右上のセルへ移動する方法について質問があります。
  • 質問者は、エクスポートされたデータがA列に全て入っており、一覧表として見やすい形に変換したいと考えています。
  • 具体的には、4行目と6行目に表示されている特定の値をB列へ移動し、B列からC列とD列へ移したいとのことです。しかし、今のコードではうまく動作しません。
回答を見る
  • ベストアンサー

該当するデータのみを右上のセルへ張付るには

いつもお世話になっております。 また先に進めずに5日間悪戦苦闘しております。 とあるデータをExcelにエクスポートをすると、A列に全てデータが入っている状態のものが出来上がります。 一覧表として見やすい形にもって行きたく、タイトルやデータの作成日、項目等は各セルへ移動させました。 4行目・6行目に表示されているものが、3行目の項目で言うところの「番号」に該当し、5行目・7行目に表示されているものが、空欄を区切りとして左から「都道府県コード」・「市町村コード」・「番地」に該当します。 4行目と5行目がひとセットのデータ、6行目・7行目がひとセットのデータになります。(このセットデータが100件以上下に連なっています) ずれている奇数行のデータをまずB列へ移動し、そこからC・D行へ移したいと考えたのですが、どうしてもコードがうまく走ってくれませんでした。 以下が表です。      A       B       C    D   1 タイトル 2 データの作成日 3   番号    都道府県コード 市町村コード 番地  4 【100001】 5 00001 0003 ●●●530-8-7 6 【103205】 7 03479 7094 △○■1-2-3 こちらが作成したコードです。 Worksheets("Sheet1").select Range("A5").Select Selection.AutoFilter Field:=1,Criterial:="0*",Operator:=xlAnd Selection.SpecialCells(xlCellType Visible).Select Application.CutCopyMode = False Selection.Copy Selection.AutoFilter Selection.Offset(-1,1).Select ActiveSheets.Paste End Sub 仕様はExcel2002になります。 都道府県コードは必ず0から始まるので、0から始まるデータを右上のセルへ移動するという指示をだしているつもりです。 以上、宜しくお願い致します。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

4行目以降が提示された状態で最終行まで続いているとします。 B~D列のセルの書式設定を文字列にしてから実行。 文字の区切りは全角のスペースである事が条件。 Sub try() Dim i As Long For i = Range("A" & Rows.Count).End(xlUp).Row To 5 Step -2 Range("B" & i - 1).Resize(, 3).Value = Split(Range("A" & i).Value, " ") Rows(i).Delete Next End Sub こんな感じとか?

saiwai
質問者

お礼

回答ありがとうございました。 教えていただきましたコードを参考にさせていただいた結果動いてくれました。 ありがとうございました! せっかくなので、動いた結果をのせておきます。 Worksheets("Sheet1").select Dim i As Long For i = Range("A" & Rows.Count).End(xlUp).Row To 5 Step -2 Range("B" & i - 1).Resize(, 1).Value = Split(Range("A" & i).Value, " ") Next Dim k As Long Range("A5").Select For k =Cells(Rows.Count,1).End(xlUp).Row To 2 Step -1 With Cell(k,1) If.Value Like "0*" Then.IntireRow.Delete End With Next End Sub

その他の回答 (1)

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

インポート直後のA列の15行ぐらいを質問にかき、完成形のシート各列データを別に下記に書き、それに説明や注意事項を添えるという形にしないと 質問の内容がわからないと思いませんか。

関連するQ&A

  • 1行のデータをスペースで区切って各セルへ振り分けるには?

    いつもお世話になっております。 再びつまづいてしまったため、お教えいただきたく、宜しくお願い致します。 1行目はタイトル 2行目はデータ作成日 3行目は項目 が入力されております。 4行目からデータが入っているのですが、A列内に1行でまとまっている状態です。 個々のデータの間は半角スペースで区切ってあり、このスペースを利用して、3行目の項目のセルへデータを移動したいと考えております。 下記が表の状態です。 |   A  |   B   |   C  |D |E | 1|タイトル  | 2|データ作成日| 3|  番号  |都道府県コード|市町村コード|番地|備考| 4|012-3456789 04679 003 ●□△659-8 ◎●△□●~| 5|123-4567890 00367 048 ■○●△4-9-2 △●□~| 4行目からがデータ群です。B列から右側にはデータが存在しません。 理想は下記の通りです。 |   A  |   B   |   C  |   D   |E | 1|タイトル  | 2|データ作成日| 3|  番号  |都道府県コード|市町村コード|  番地   |備考| 4|012-3456789 |  04679   |  003   |●□△659-8 |◎●△□●~| 5|123-4567890 |  00367   |  048   |■○●△4-9-2|△●□~| 下記のように組んでみました。 Worksheets("Sheet1").select Range("B4").Select Dim c As Range Dim j As Variant For Each c In Selection j =Split(c.Value," ") c =Offset(0,0).Resize(1,UBound(j)+1)=j Next c End Sub 4行目のみ理想通りに動き、5行目からがどうしても動きません。 環境はExcelは2002です。 以上、宜しくお願い致します。

  • 可視セルの削除

    オートフィルタで抽出したデータを行ごと削除するのですが、 可視セルで検索をすると、1列目の見出し行も含まれてしまいます。 1列目を除くには、どのように記述したらいいのでしょうか? Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="=" Selection.SpecialCells(xlCellTypeVisible).Select ↑これで、今、削除したい部分、プラス見出し行が選択されています。

  • オートフィルタをし選択・貼付をマクロにしたいのですが、対象データ表示される行が毎回違うのでうまくいきません。

    いつもお世話になっております。 どなたかご教示いただければ助かります。 ファイル(1)のデータの中からA行が830となっているものを、ファイル(2)のページ1の一番下の行に付け足し 同じようにファイル(1)からA行が1000となっているものを、ファイル(2)のページ2の一番下に付け足す という作業をマクロでしたいのですが、毎回830と1000がセルAの何行目に表示されるのかが異なっており、オートフィルタをかけた状態でマクロにするとマクロ作成時にたまたま表示されていた行数が指定されているので、別の日に違う行数をコピーしてしまい私が作成したマクロではうまくいきません。 どう変更すれば宜しいでしょうか? どうぞ宜しくお願い致します。 Workbooks.Open Filename:="mm.xls"    ←上記文でファイル(1) Sheets(DM).Select Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>*850*", Operator:=xlAnd, _ Criteria2:="<>*1000*" Range("A2").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.EntireRow.Delete ActiveSheet.Rows("1:1").Select Selection.AutoFilter Windows("xx.xls").Activate  ←ファイル(2) Sheets("ll").Select   ←ページ1  ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="1000" Rows("3:3").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False Windows("xx.xls").Activate Sheets("pp").Select  ←ページ2 ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="850" Rows("2:2").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save Windows("mm.xls").Activate ActiveWindow.Close End Sub

  • オートフィルタで抽出したデータをVBAで貼り付けしたい

    質問させていただきます。 エクセルで仕入帳を作っています。 各取引先ごとに1枚のシートになっているのですが、 該当する月をオートフィルタで抽出して、そのデータを1枚のシートに貼り付けていき、各月ごとにデータをまとめたいと思っています。 ユーザーフォームで月を入力してオートフィルタで抽出しているのですが、データのないシートの場合不要な部分までコピー&ペーストされてしまいます。 これを回避するにはどのようにコードをかけばいいのでしょうか。 よろしくお願い致します。 現在はこのようなコードで抽出しています。 Private Sub CommandButton1_Click() Application.ScreenUpdating = False Worksheets("sheet2").Select Range("H1:H17").Select Range("H17").Activate Selection.AutoFilter Field:=8 Rows("2:2").Select Rows("2:500").Select Selection.ClearContents RowIndex = 3 '行番号の初期値設定 Do While Worksheets("目次").Cells(RowIndex, 1).Value <> "" '拾ったセルの値が空でない間ループ内の処理をする 検索値 = UserForm1.TextBox1.Text DataSheetName = Worksheets("目次").Cells(RowIndex, 1).Value Worksheets(DataSheetName).Select Range("A2").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=13, Criteria1:=検索値 & "月分" Set tbl = ActiveCell.CurrentRegion tbl.Offset(2, 0).Resize(tbl.Rows.Count - 2, tbl.Columns.Count).Select Selection.Copy Worksheets("sheet2").Select IRow = Range("A" & Rows.Count).End(xlUp).Row Range("A" & IRow + 1).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Worksheets(DataSheetName).Select Selection.AutoFilter Field:=13 RowIndex = RowIndex + 1 '行番号カウントアップ Loop Application.ScreenUpdating = True Worksheets("sheet2").Select Range("A2").Select Unload UserForm1 End Sub

  • マクロ 可視セルへコピーする方法

    こんにちは。よろしくお願いします。 A~V列、300~400行程度の表を作っています。 8行目をコピーして空白行へペーストしたいのですがどのようにすれば良いでしょうか。 マクロの記録でつくったものは ActiveSheet.Paste でエラーになります。 またペースト開始行をA17ではなくて可変なものに変えたいです。 よろしくお願いします。 Sub 下までコピー() Range("A8:V8").Select Selection.Copy Selection.AutoFilter Field:=2, Criteria1:="=" Range("A17:V" & Range("B5").End(xlDown).Row).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter Field:=2 End Sub

  • Excel VBAでオートフィルターを使って他の列を空白に

    Excel VBAでオートフィルターを使ってAF列(32列)が空白ならBN列(66列)を空白する為、以下を作成したのですが、AF列(32列)に空白がない場合はBN列(66列)全て空白になってしまうのですが、どのようにしたら良いのでしょうか? 毎月300~500行になる為、オートフィルターを使用した方が処理が早いと思いしたのですが... '-------オートフィルター後、該当データーのみ範囲指定する--------- 'オートフイルターの条件を入れる列の番号(32)に条件("空白") Selection.AutoFilter Field:=32, Criteria1:="" Selection.CurrentRegion.Select 'アクティブセル領域を選択する Selection.Offset(1, 0).Select '選択領域を1行下へ移動する Selection.Resize(Selection.Rows.Count - 1).Select '選択領域を1行減らす(見出し行) Selection.Offset(0, 65).Select '選択領域の左端のをBM列にする Selection.Resize(, 1).Select '選択領域を1列右にする Selection.ClearContents '該当データーのみ空白にする Selection.AutoFilter Field:=32 'フィルターオプション解除

  • フィルタで検索した行をマクロで削除する時のコード。

    フィルタで検索した行を一括して削除するマクロを作りました。 記録して加工したマクロで今のところ動くのですが、 理解不能の箇所があるので教えてください。 下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。) また、コメントを各コードにつけています。 ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行目のデータがフィルターにより隠れることもあるのですが、このコードできちんと動きます。 可視セルしか削除しないのなら、分かるのですが、 そのようなコードも無いようですし・・・ なぜこのコードで動くのか教えてください。 Rows("1:1").Select  '1行目を選ぶ Selection.AutoFilter  'オートフィルター Range("C1").Select   'C1を選ぶ Selection.AutoFilter Field:=3, Criteria1:="=" '空白行を探す。Field3は不明です Rows("2:2").Select  '(1) 2行目を選択 Range(Selection, Selection.End(xlDown)).Select '2行目から連続した最後の行までを選択 Selection.Delete Shift:=xlUp  '選んだところをDelして上に詰める。 Range("C1").Select  'C1を選ぶ Selection.AutoFilter Field:=3  'フィルタ解除 基本的なことかもしれませんが、ご教示頂ければ幸いです。 よろしくお願いします。

  • エクセルマクロ 抽出したデータを別のシートへコピーしたい

    マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 【1】シート名「データ」をA列でオートフィルタ抽出して、別シートにコピーする。 【2】別シートにコピーしたデータに外枠罫線をつける。 【3】シート名「データ」には塗りつぶしがあるので、別シートにコピーされた塗りつぶしは「なし」する。 【4】シート名「Sheet1」の1~2行目をコピーし、別シートの1~2行目に挿入し、シート名「データ」に戻る。 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、今はコピーして「あ行」の部分を書き換えています。(かなり面倒です) 最終的には、抽出されたそれぞれのシートを別々のブックにしたいとも思っています。 長々とすみませんが、どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 Sheets("データ").Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ行", Operator:=xlAnd Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Sheets("あ行").Select Range("A1").Select ActiveSheet.Paste Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Cells.Select Selection.Interior.ColorIndex = xlNone Sheets("Sheet1").Select Rows("1:2").Select Selection.Copy Sheets("あ行").Activate Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select Sheets("データ").Select Range("A1").Select

  • 【マクロ】オートフィルター内の全データが削除される

    こんにちは、質問させていただきます。宜しくお願いします。 [エクセル] 2007 [内容] オートフィルタをかけ任意のデータのみ消したいのですが 全てのデータが消えてしまいます。 [詳細] A1~C5までデータが入っているのもだと仮定します。 (実際には項目があってフィルタがきちんとかかるものとします。)    A   B   C ----------------------- 1  ○   2個  \10 2  △   1個  \5 3  ×   3個  \15 4  ○   1個  \20 5  ○   4個  \5 オートフィルタをかけA列を基準として「○」を選択します。 そして選択した「○」を含む行(1行・4行・5行)を削除し 2行・3行目が残るようにしたいです。 その一連をマクロにして処理したいのですが… 1行から5行のすべての行データが削除されてしまいます。 <マクロ作成> マクロを記憶する。 ↓ 手動でオートフィルタをかけ、「○」を選択して行を削除 ↓ マクロの記憶を終了。 ↓ マクロ文の削除する行範囲をA1からC5に書き換え ↓ マクロ実行 <マクロ作成文>  Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="○" ActiveSheet.Range("A1:C5").Select Selection.Delete Shift:=xlUp ※エクセル2007のバージョンによっては選択した「○」のみ 削除されるPCもありましたので、何か設定があるのかな?と 思いましたが…解決しませんでした。 何か良い案があれば教えていただきたいです。 宜しくお願い致します。

  • VBAコードを教えて下さい!!

    VBA初心者です。 皆様どうぞお力をお貸し下さい(>_<) A列「都道府県」・B列「市町村」・C列「番地」と分かれた列にそれぞれ入力してあります。 それをA~C列を結合して「都道府県市町村番地」と表示させたい。 データは2行目~500行目くらいまで入っています。 最初の1行(A2~C2)だけは出来たのですが、 それ以降データの終わりまではどうすれば良いのか分かりません。 どうぞ宜しくお願い致します。

専門家に質問してみよう