excelこんなデータがあります。.....は連続ブランクを教えてgooが認識しないためなので、ブランクだと思ってください。
A列
1
2りんご
3みかん
4
5ばなな
6めろん
7そば
8
上記をこのようにしたいです。
A列.......|B列....|C列....|D列
1 .........|りんご|みかん
2 .........|
3 .........|
4 .........|ばなな|めろん|そば
言葉で説明しますと
①ブランク行の下行にデータがあれば、ブランク行の隣に移動させる
(A2のデータをB1に移動する)
②その下にもデータがあれば、①で移動させたデータの隣に移動させる
(A3のデータをC1に移動する)
③その下がブランクであれば何もしない
④その下にデータがあれば、ブランク行の隣に移動させる
(A5のデータをB4に移動する)
⑤以降を繰り返す
これを、関数でもVBAでもいいのである程度自動で行いたいです。
なぜこんなややこしいことをしたいかといいますと、先の例のブランクとブランクの間の
データは一つのデータなので、横並びにして管理したいのです・・・
また、ブランクの位置がずれてしまうとデータとして使えないので
試行錯誤している次第です。
以上、ご教授よろしくお願い申し上げます。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
》 試行錯誤している次第です。
》 ご教授よろしくお願い…
「ご教授」ねェ~、(^_^)
恥かし乍ら、私の“滅茶苦茶ゴリオシ”「試行錯誤」の結果です。
添附圖參照(Excel 2019)
Sheet2 に於いて、
1.下記の各セルに夫々右側の式を入力後、範圍 F2:H2 を下方に
 ̄ ̄オートフィル
 ̄ ̄ A2: =COUNTIF(A$1:A1,"")
 ̄ ̄ B2: =SMALL(IF(A:A="",ROW(A:A)),ROW(A1))
 ̄ ̄ C2: =G3-G2
 ̄ ̄ D2: =C2-1
 ̄ ̄ 【御斷はり】B2の式のみ、必ず配列數式として入力
Sheet1 に於いて、
2.次式を入力したセル B2 を
 ̄ ̄ =IF(COUNTIF(Sheet2!$B$2:$B$10,ROW()-1),IF(COLUMN(A1)>INDEX(Sheet2!$D$2:$D$8,Sheet2!$A2),"",OFFSET($A2,COLUMN(A1)-1,)),"")
3.範圍 B列以右を選擇⇒Ctrl+C⇒當該選擇範圍内でマウスの
 ̄ ̄右クリック⇒[貼り付けのオプション]直下の[123](値)アイコン
 ̄ ̄をツン⇒A列を選擇⇒Deleteキーを「エイヤッ!」と叩き附け
No.5
- 回答日時:
もし、ご質問者のご希望を関数で実現するとなると、関数では自身を書き換えることはできませんので、
sheet1に元データがあるとして、sheet2に移動後のデータが作成されるものとして、考えてみました。
ご質問者の説明によれば、移動後のデータのA列は常に空白セルということになりますので、sheet2のA列は空白のまにしておきます。
sheet2のB1に以下の数式
=IF(IF((COLUMN()>2)*(A1="")+(Sheet1!$A1<>""),"",INDEX(Sheet1!$A:$A,COLUMN()+ROW()-1,1))=0,"",IF((COLUMN()>2)*(A1="")+(Sheet1!$A1<>""),"",INDEX(Sheet1!$A:$A,COLUMN()+ROW()-1,1)))
を記述し、右方向へコピーします。sheet1の空白と空白で挟まれたデータの個数の最大値分コピーすることになります。
同様に下方向にもコピーします。判り易くするため、データのある部分にはセルに色をつける「条件付き書式」を設定してみました。
添付画像を参照してください。
また、仮にVBAで実現するとすれば、以下のようなものになると思います。
Option Explicit
Sub sumple()
Dim target As range
Dim i As Long
Dim k As Long
Dim e_row As Long
e_row = Cells(Rows.Count, 1).End(xlUp).Row
k = 0
For i = 1 To e_row
Set target = Worksheets(1).Cells(i, 1)
If Worksheets(1).Cells(i, 1).Value = "" Then
k = 0
Else
k = k + 1
If i - k > 0 Then
target.Offset(-k, k).Value = target.Value
target.Clear
End If
End If
Next
Set target = Nothing
End Sub
なお、このVBAはtatsumaru77さんのご指摘のとおり、
>もし、A1にデータがあった場合はA1,A2,A3のデータは、移動せず、そのまま
となります。
だたひとつ疑問なのは、ご質問者は
>また、ブランクの位置がずれてしまうとデータとして使えないので
とおっしゃっていますが、データも移動した時点でA列は全てプランクになり、もともとのブランクの位置は変らなくても、新たにブランクが発生してしまいます。
それでよいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- その他(ブラウザ) cvsファイルをダウンロードすると、自動で拡張子がExcelのものになる 5 2022/07/20 21:21
- その他(Microsoft Office) PCを買い換えました。 今使っているノートパソコンが10年以上使っており新しく買い換えました。Win 5 2023/03/26 00:18
- Android(アンドロイド) スマホの新端末へのデータ移行について iPhoneの旧端末から新端末へのデータ移行はすごいですね。 1 2022/05/30 14:25
- Android(アンドロイド) Androidスマホのデータ移行が終わらない 1 2023/08/04 17:25
- その他(Microsoft Office) VBAで横データを縦データに変換する方法を教えて下さい。 4 2023/06/25 21:12
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- 写真・ビデオ 壊れたパソコンのデータ移行について 3 2023/06/04 18:06
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- iPhone(アイフォーン) iphoneのicloud写真データ移動について 3 2022/11/28 18:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報