下記に添付した画像の左の図のように、
2つの列を設け、A列は番号で、B列は、文字又は画像を挿入します。
そして、それらをデータの並び替えで、番号を基準と昇順に並び変えた時に、
画像の右の図のように、画像が入っている番号4の行のセルの、高さがキープされず、
一方で、番号10の行のセルの高さが、そのままになってしまいます。
データを並び変えた後も、セルの高さを維持するにはどのように設定すればよいのでしょうか?
よろしくお願いします。
尚、画像については、画像上で右クリックで、サイズとプロパティより、「◎セルに合わせて移動やサイズを変更する」に設定してあります。
No.2
- 回答日時:
エクセルが並び替えの対象としてるのは「値」レイアだけ。
罫線とか式とか、他のレイヤは元のままです。
そういうスペックだから仕方有りません。
No.3
- 回答日時:
いままでの回答者さんが述べておられるとおり、画像を貼り付けた場合、順番を入れ替えるとセルの高さを自動的に調整するのは困難なようです。
No.1さんが、
>一つずつ手作業で修正するしかないよ。
とおっしゃっていますが、そこまで手間をかけずとも、2ステップで高さを調整する方法はあります。
まず、画像を貼り付けるセルに「ALT+ENTER」を複数回入力し、画像がフルサイズで表示される高さを確保します。
その状態で画像を貼り付けます。当然、「◎セルに合わせて移動やサイズを変更する」は設定しておくものとします。
添付画像(ア)をご覧ください。番号がばらばらで11行目に「番号4と画像」が表示されています。これを番号順に並べ替えしたものが添付画像(イ)です。画像のあるセルが5行目に表示されていますが、高さが調整できていません。また、もともと画像のあった11行目の高さも画像があったときの高さのままです。
これを以下の2ステップで高さ調整します。
(1)添付画像(ウ)の①つまり、行番号と列名の交差する左隅の位置をクリックするとシート全体が選択された状態になります。
(2)上記の状態で、マウスカーソルを添付画像(ウ)の➁つまり、一行目と二行目の間でマウスカーソルが上下の矢印に変わる位置にもっていき、ダブルクリックします。
上記の2ステップで添付画像(エ)のように、今画像のあるセルの高さと前に画像があったセルの高さが同時に調整されます。
No.4ベストアンサー
- 回答日時:
こんにちは
既に回答にある通り、組み込みの機能、メソッドでは出来ないですね。
もし、そのような処理を行いたい場合は、VBAを使う必要があります。
勿論、手作業で行う方法もありますが、画像のサイズより大きいセルの高さで設定されている場合は、1行ごと設定する必要が出てきて、行数によっては、、やってられません。(私の場合は)
この様なことがきっかけでVBAを覚える方もいらっしゃるかと思いますが
VBAを作成、使うには、ある程度の知識が必要になるのと(これは関数やメソッドでも同じかな)問題点があります。
最大の問題点は、VBAマクロで実行処理された内容を戻るボタン、Ctrl+Zキーなどで戻せないと言う事だと思います。
ご質問の内容(例)をVBAで行う場合
処理の内容
①選択範囲(見出し行を含まない)の一番左列をキーに昇順または降順で並び替えます。
②セル内に配置された画像も移動します(要:画像設定「◎セルに合わせて移動やサイズを変更する」
③並び替えに行の高さも適用
導入方法
対象ブックを開き
①Alt+F11キーを押します。(VBE(エディター)が表示されます)
②Altを放さず Iキーを押し
③Altを放さず Mキーを押します。
(Altキーを放した場合は、Altキー+Iキー Altキー+Mキー)
④カーソルが表示されている部分に下記をコピペ
’この下からーーー
Sub 範囲並び替え()
Dim i As Long, n As Long, rCount As Long
Dim Ary1(), rng As Range
Set rng = Selection
rCount = rng.Rows.Count
If rCount <= 1 Then MsgBox ("対象範囲を選択してください"): Exit Sub
ReDim Ary1(1 To rCount, 2)
For i = 1 To rCount
Ary1(i, 1) = rng(i, 1).Value 'keyPos
Ary1(i, 2) = rng(i, 1).RowHeight
Next
Call quick_sort(Ary1, LBound(Ary1), UBound(Ary1), 1)
Dim retMsg
Dim lngSt As Long, lngEnd As Long, intStp As Integer, Ky As Integer
retMsg = MsgBox(Prompt:="並び替え処理を実行しますか?" & vbCrLf & vbCrLf & _
"昇順処理は 「はい」ボタンを" & vbCrLf & _
"降順処理は 「いいえ」ボタンを" & vbCrLf & _
"中止する場合は「キャンセル」ボタンを押してください", _
Buttons:=vbYesNoCancel, Title:=" 処 理 選 択 ")
If retMsg = 6 Then
lngSt = 1: lngEnd = rCount: intStp = 1: Ky = 1
ElseIf retMsg = 7 Then
lngSt = rCount: lngEnd = 1: intStp = -1: Ky = 2
Else
MsgBox "中止しました": Exit Sub
End If
rng.Sort Key1:=Cells(1, 1), Order1:=Ky, Header:=xlNo
n = 1
For i = lngSt To lngEnd Step intStp
rng.Rows(i).RowHeight = Ary1(n, 2)
n = n + 1
Next
End Sub
Sub quick_sort(ByRef argAry() As Variant, _
ByVal lngMin As Long, _
ByVal lngMax As Long, _
ByVal keyPos As Long)
Dim i As Long, j As Long, n As Long
Dim vBase, vSwap
vBase = argAry(Int((lngMin + lngMax) / 2), keyPos)
i = lngMin
j = lngMax
Do
Do While argAry(i, keyPos) < vBase
i = i + 1
Loop
Do While argAry(j, keyPos) > vBase
j = j - 1
Loop
If i >= j Then Exit Do
For n = LBound(argAry, 2) To UBound(argAry, 2)
vSwap = argAry(i, n)
argAry(i, n) = argAry(j, n)
argAry(j, n) = vSwap
Next
i = i + 1
j = j - 1
Loop
If (lngMin < i - 1) Then
Call quick_sort(argAry, lngMin, i - 1, keyPos)
End If
If (lngMax > j + 1) Then
Call quick_sort(argAry, j + 1, lngMax, keyPos)
End If
End Sub
’この上までーーー
*ブックの保存は、マクロ有効ブックで
使い方
① 並び替えを行いたい範囲を選択します。(見出し行を含めない)
② Altキー + F8キーを押します
③ 表示されたUIの 範囲並び替え を実行します。
(選択してダブルクリックでも実行できます)
上記サンプルのデバックは完全ではありません。
テストする場合は、自己責任でコピーファイルなどを使い
十分なテストを行ってください。
参考: 鵜原パソコンソフト研究所 2次元配列の並べ替え
https://excel-ubara.com/excelvba5/EXCELVBA229.html
ありがとうございます。このような時に、マクロのコードが書ける人に憧れます。貼り付けて実行してみたら、おっしゃるとおり、幅を変えずに移動することができました。とても便利です。変更しなければならない場所がとても多かっただけに、とてもありがたい機能です。感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) 同じ品番のマスタで最新日付のものに〇印を入れたい 3 2023/03/31 17:45
- Excel(エクセル) 条件付き書式 別のシートで色付けされたセルデータの転記漏れを防ぐ書式を入れたい 4 2022/04/22 06:36
- その他(Microsoft Office) VBAで横データを縦データに変換する方法を教えて下さい。 4 2023/06/25 21:12
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
彼と体の相性が良すぎて悩んで...
-
女性が喘いでいるときの男性の...
-
彼氏と毎日セックスするのは異...
-
高校生です。彼氏の前で初めて...
-
夫婦の夜の営みについてです。 ...
-
男性の方に質問です。 バックで...
-
彼女が感じやすくて可愛い
-
もし週1しか恋人と会えなかった...
-
抱きしめたときに勃起したあそ...
-
男の人ってなんですぐ勃つの?...
-
クンニしたことある人ー ま○こ...
-
ふぇらでイカセテくれる うまい...
-
キスすれば相手を好きでなくて...
-
兄妹や姉弟で、キスやエッチし...
-
SEXの相性が良すぎると男はダメ...
-
風俗を利用した事がある男性の...
-
男性に質問です! 電話だけで勃...
-
初体験って気持ちいいの? 男の...
-
実家住まいの場合Hはホテル以外...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
彼と体の相性が良すぎて悩んで...
-
高校生です。彼氏の前で初めて...
-
女性が喘いでいるときの男性の...
-
夫婦の夜の営みについてです。 ...
-
抱きしめたときに勃起したあそ...
-
彼氏と毎日セックスするのは異...
-
彼女が感じやすくて可愛い
-
もし週1しか恋人と会えなかった...
-
男の人ってなんですぐ勃つの?...
-
クンニしたことある人ー ま○こ...
-
男性の方に質問です。 バックで...
-
兄妹や姉弟で、キスやエッチし...
-
SEXの相性が良すぎると男はダメ...
-
彼氏のセックスが下手すぎで幻...
-
初体験って気持ちいいの? 男の...
-
男性に質問です! 電話だけで勃...
-
キスすれば相手を好きでなくて...
-
ふぇらでイカセテくれる うまい...
-
彼氏が勃っていました。 高校生...
おすすめ情報