幼稚園時代「何組」でしたか?

あるエクセルの表に、様々な数値が入力されてますが、各々単位が異なります(金額、長さの単位、重さの単位等)
それらのセルのうち、金額で表示されているセルのみを選択し、その値の1.1倍の値を表示させるためにはどうしたらよいでしょうか。
エクセルの数式では使えそうな数式がないように思い、質問させていただくことにしました。
マクロを使うと解決できると思うのですが、どのようにプログラムを書けばいいのかわかりません。
どなたか、お力を貸していただけると大変助かります。

質問者からの補足コメント

  • 皆様、回答をくださりどうもありがとうございます。
    もう少し詳しく説明しますと、エクセルの横軸に品番、エクセルの縦軸に金額(€)、馬力(kw)、回転数(rpm)などの数値があり、金額のみ1.1倍したいです(他の数値は変える必要がありません)
    皆様から頂いたプログラムを全部試してみたいと思います。

    No.4の回答に寄せられた補足コメントです。 補足日時:2018/10/23 03:41

A 回答 (4件)

確認させてください。


「金額で表示されているセルのみを選択し」ってことは、すでに関数では厳しいですよね。認識あってますか?
「その値の1.1倍の値を表示」って、どんな表示イメージですか?複数のセルが選択されているはずなので、セル毎に表示する必要があると思うのですが・・・。それとも選択されたセルの値を上書したいのでしょうか?
「金額で表示されているセル」の条件も提示した方が良いですね。
この回答への補足あり
    • good
    • 0

こんにちは。



金額で表示されているセルというと、\ のマークが入っているという意味でしょうか?
これらは、書式で処理したものに限ります。

'//標準モジュール

Function CurrCal(Rng As Range, Optional cur As String = "\")
 Dim amt As Variant
 Dim myVal As String
 Dim wSize As String
 Dim i As Long
 If IsNumeric(Rng.Value) Then
  myVal = Rng.Text
  wSize = StrConv(myVal, vbWide)
  i = Len(wSize) - Len(Replace(wSize, StrConv(cur, vbWide), ""))
  If i > 0 Then
   amt = Rng.Value
  Else
   amt ="" '該当しない時は、長さ0の文字列の出力
  End If
 End If
 CurrCal = amt
End Function

=CurrCal(A1,"\")*1.1
または、省略して、=CurrCal(A1,)*1.1

CurrCal(セル、通貨[オプション])
となっています。通貨のデフォルトは、"\" です。

円の場合は、
CurrCal(セル、"円")

計算の反応が悪い時はに、Shift + F9 で再計算してください。
    • good
    • 0

こんにちは!



>各々単位が異なります(金額、長さの単位、重さの単位等)

とは 100円、100m、100Kg のように文字列で各セルにデータが入っている!というコトでしょうか?
そして、別セルではなくそのセルで処理したい!という解釈です。
一例です。

Sub Sample1()
 Dim c As Range, myVal
  For Each c In ActiveSheet.UsedRange
   If InStr(c, "円") > 0 Then
    myVal = Replace(c, "円", "")
    c = myVal * 1.1 & "円"
   End If
  Next c
End Sub

※ 場合によっては小数点以下の表示になると思います。
その場合はROUND関数などで丸めた方が良いかも・・・

※ 的外れならごめんなさい。m(_ _)m
    • good
    • 0

=IF(LEFT(CELL("format",A1),1)="C",A1*1.1,A1)



…かな。
CELL関数で”format”を指定しセルの書式を調べ、
 CELL("format",A1)

通貨になっていれば
 C0
 C0-
 C2
 C2-
のいずれかが返ってくるので、
LEFT関数で1文字目を抜き出して
 LEFT(CELL("format",A1),1)

"C"なら1.1倍して、違えば1倍のまま。
 IF(LEFT(CELL("format",A1),1)="C",A1*1.1,A1)

とする。
…で、いいんじゃないかな。
    • good
    • 0

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