Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6216 / 13644 ツリー ←次へ | 前へ→

【46532】最終列の値の、値のみ代入するには chacola 07/2/6(火) 6:51 質問[未読]
【46533】Re:最終列の値の、値のみ代入するには かみちゃん 07/2/6(火) 7:27 発言[未読]
【46534】Re:最終列の値の、値のみ代入するには chacola 07/2/6(火) 8:00 質問[未読]
【46561】Re:最終列の値の、値のみ代入するには かみちゃん 07/2/6(火) 20:49 発言[未読]

【46532】最終列の値の、値のみ代入するには
質問  chacola  - 07/2/6(火) 6:51 -

引用なし
パスワード
   いつもお世話になっております。また、質問させて下さい。

単価の列を、まず検索し、同行の最終列の値を代入させたいのですが、
最終列には、数式が入っています。
最終列には、単価列と同行あります。最終行は浮動なので、下記コードは
最高1000と設定しています。

'列
Dim i As Integer
'最終列
Dim J As Integer
'行
Dim k As Integer

Application.ScreenUpdating = False
'一番左の2行目
J = Range("IV2").End(xlToLeft).Column
For i = J To 1 Step -1
If InStr(Cells(2, i).Value, "単価") > 0 Then
  '基準行を3行目とする
  k = 3
  Do While k < 1000
  Cells(k, i).Value = Cells(k, J).Value
  k = k + 1
Loop
End If
Next i

Application.ScreenUpdating = True

End Sub

「値のみ」代入させるには、Transpose等を記述するのでしょうか?

よろしくお願い致します。

【46533】Re:最終列の値の、値のみ代入するには
発言  かみちゃん  - 07/2/6(火) 7:27 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>単価の列を、まず検索し、同行の最終列の値を代入させたいのですが、
>最終列には、数式が入っています。

[46523]でご質問された表のイメージでいいのですか?
  A  B   C   D  E   F  ・・・ CB
1 単価 数量 合計 単価 数量 合計    数量合計
2 5   10  50  10  10  100     20
3 2   10  20  5  8   40      18

>「値のみ」代入させるには、Transpose等を記述するのでしょうか?

上記の表のイメージ(G〜CAには値がないものとする)ですと、D3セルの5を取得
したいということでしょうか?
それであれば、Transposeは全く違います
TRANSPOSE関数は、配列の縦方向と横方向のセル範囲の変換を行う、ワークシート関数です。

そこで、以下のようなコードでできると思います。

Sub Sample2()
 '列
 Dim i As Integer
 '最終列
 Dim J As Integer

 Application.ScreenUpdating = False
 '一番左の2行目
 J = Range("IV2").End(xlToLeft).Column
 For i = J To 1 Step -1
  If InStr(Cells(2, i).Value, "単価") > 0 Then
   MsgBox Cells(Rows.Count, i).End(xlUp).Address & vbCrLf & _
       Cells(Rows.Count, i).End(xlUp).Value
   Exit For
  End If
 Next i
 Application.ScreenUpdating = True
End Sub

【46534】Re:最終列の値の、値のみ代入するには
質問  chacola  - 07/2/6(火) 8:00 -

引用なし
パスワード
   かみちゃんさん、朝からありがとうございます!
昨日から、ありがとうございます。


表のイメージをまた、書きませんでした。。
すみませんでした。

A  B   C  D  E   F ・・ AC    AD   AE 
1 数量    重量 金額 目標数 単価  合計数量    合計金額 基本単価
2  10  10 100           150   2270  15(AD/AC)
3  20  15 300            50   1000   20

AEの基本単価150を、F列(他複数列有)に代入したいのです。
上記例は、割り切れていますが、F2には、15.133・・と代入
されています。表示方法で、基本単価列も、単価列も通貨小数点以下0にしておりますが、列幅自動にしても、15.133・・分の列幅をとってしまします。
基本的なことかもしれませんが、15のみ代入するには、ROUNDUP関数を
記述するのでしょうか?

いつもすみませんが、どうぞよろしくお願い致します。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>単価の列を、まず検索し、同行の最終列の値を代入させたいのですが、
>>最終列には、数式が入っています。
>
>[46523]でご質問された表のイメージでいいのですか?
>  A  B   C   D  E   F  ・・・ CB
>1 単価 数量 合計 単価 数量 合計    数量合計
>2 5   10  50  10  10  100     20
>3 2   10  20  5  8   40      18
>
>>「値のみ」代入させるには、Transpose等を記述するのでしょうか?
>
>上記の表のイメージ(G〜CAには値がないものとする)ですと、D3セルの5を取得
>したいということでしょうか?
>それであれば、Transposeは全く違います
>TRANSPOSE関数は、配列の縦方向と横方向のセル範囲の変換を行う、ワークシート関数です。
>
>そこで、以下のようなコードでできると思います。
>
>Sub Sample2()
> '列
> Dim i As Integer
> '最終列
> Dim J As Integer
>
> Application.ScreenUpdating = False
> '一番左の2行目
> J = Range("IV2").End(xlToLeft).Column
> For i = J To 1 Step -1
>  If InStr(Cells(2, i).Value, "単価") > 0 Then
>   MsgBox Cells(Rows.Count, i).End(xlUp).Address & vbCrLf & _
>       Cells(Rows.Count, i).End(xlUp).Value
>   Exit For
>  End If
> Next i
> Application.ScreenUpdating = True
>End Sub

【46561】Re:最終列の値の、値のみ代入するには
発言  かみちゃん E-MAIL  - 07/2/6(火) 20:49 -

引用なし
パスワード
   こんにちは。かみちゃん です。

さきほど、仕事から帰ってきたので遅くなりました。

>A  B   C  D  E   F ・・ AC    AD   AE 
>1 数量    重量 金額 目標数 単価  合計数量    合計金額 基本単価
>2  10  10 100           150   2270  15(AD/AC)
>3  20  15 300            50   1000   20
>
>AEの基本単価150を、F列(他複数列有)に代入したいのです。

表がずれているのでしょうか?
AEの基本単価は、150とはどこのセルなのでしょうか?
上記表だと、AC2セルに見えるのですが、ちょっとわかりづらいです。

>上記例は、割り切れていますが、F2には、15.133・・と代入
>されています。

基本単価150をF列に代入したいことと、F2セルには、15.133の値が入力されている
という関係がわかりづらいです。
代入したいセルF列には、すでに代入されているのではないでしょうか?

説明しづらければ、サンプルファイルを拝見したほうが早いかもしれませんね。

6216 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free